¿Por qué la velocidad de lectura de datos de mi puerto USB COM depende de la computadora portátil que se está conectando?

2

Resumen

Estoy leyendo datos en serie a través de un puerto USB y cuando la computadora portátil se está cargando, el puerto COM recibe aproximadamente 60 actualizaciones por segundo y cuando la computadora portátil no se está cargando, el puerto COM recibe aproximadamente 1 actualización por segundo.


Antecedentes (no estoy seguro de qué información es útil)

Estoy trabajando en un proyecto donde un conjunto de sensores se comunican con un microprocesador y el microprocesador está conectado a una computadora portátil. Debido a que necesito los datos para usar en el control en tiempo real, la velocidad a la que la computadora portátil recibe información del microprocesador es importante.

Por lo general, he podido obtener alrededor de 60 actualizaciones del microprocesador por segundo. Sin embargo, a menudo me enfrento a desaceleraciones ocasionales sin ninguna razón obvia. Hoy se produjo una de estas ralentizaciones y me di cuenta de que cuando la computadora portátil no estaba cargando activamente las actualizaciones por segundo era muy lenta, pero cuando la computadora portátil se estaba cargando recibía actualizaciones a toda velocidad.

Tenga en cuenta que el microprocesador no es alimentado por la computadora portátil.

Edición 1: Mi plan de energía está configurado en equilibrado.

Edición 2: hice los siguientes cambios para intentar mejorar el rendimiento

  1. Establezco mis procesos críticos en prioridad en tiempo real
  2. establecer mi plan de energía a alto rendimiento
  3. Estaba enviando datos a una ventana de consola bastante rápido, así que disminuí la impresión de la consola
  4. Deshabilité la suspensión selectiva de USB
  5. Anteriormente, había cambiado el temporizador de latencia del puerto COM a 1 ms y la recepción (bytes) a 128 en un intento de solucionar problemas de comunicación con este dispositivo.

Pensé que esto lo había solucionado, pero después de correr durante varios minutos, la desaceleración volvió a ocurrir.

Al observar el Administrador de tareas cuando el programa se ejecuta correctamente, el uso de la CPU es de aproximadamente el 50% y el uso de la memoria es de aproximadamente el 50%. Justo cuando se produjo la desaceleración, la utilización de la CPU se redujo a aproximadamente el 25%, el uso de la memoria se mantuvo sin cambios.

Parecía que el número de subprocesos y controladores que se muestran en el administrador de tareas aumentaba constantemente con el tiempo, hasta aproximadamente 4000 subprocesos y 98000 controladores. Cuando cerré mis programas, el recuento de subprocesos se redujo a aproximadamente 3000 y el recuento de manejo a aproximadamente 90,000.

Configuraciones de puerto COM

Edición 3:

Entré en el BIOS y cambié Intel Speedstep a deshabilitado y el control de los estados C a deshabilitado. Esto no pareció arreglar nada. Hice esto siguiendo los consejos de esta página web: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html

Edición 4: utilicé Docklight para confirmar que el microprocesador está enviando información lo suficientemente rápido. Entonces, el problema definitivamente está en el extremo de la computadora portátil

James
fuente
¿Ha verificado que la configuración de su plan de energía está configurada correctamente? Si la aplicación que recibe las actualizaciones está vinculada al rendimiento de la CPU, tener un plan de energía incorrecto, podría explicar lo que ha presenciado. Proporcione cualquier información necesaria en una actualización de su pregunta.
Ramhound
Ramhound, mi plan de poder está equilibrado. Mirando en línea parece que eso puede causar algunos problemas cuando se hacen altas demandas de la CPU. Además de ver el uso de la CPU mientras se ejecuta la aplicación, ¿cómo podría saber si está vinculado al rendimiento de la CPU? (Actualmente estoy en casa y no ejecutaré el programa hasta mañana)
James
¿Has intentado configurar tu plan de energía al "máximo rendimiento" o como se llame?
Jamie Hanrahan
Todavía no, Jamie, no se dio cuenta de que eso podría ser un factor hasta que Ramhound lo mencionó. Cuando llegue al laboratorio mañana, definitivamente haré una prueba e informaré. Podría ser la causa, pero aún no lo sé. Gracias.
James