Pregunta

Necesito graficar datos de transmisión (9600 baudios), que vienen en paquetes de 2-4 bytes desde un puerto serie. Los paquetes deben procesarse antes de graficar. Actualmente, estoy generando un evento en cada paquete completo, lo que está causando problemas de respuesta en el formulario de gráficos.

¿Cuál es la mejor solución para este problema?

  • Almacenamiento de datos en búfer y aumento de datos en búfer en eventos a intervalos de tiempo (es decir, 500 milisegundos)
  • Construir búfer y dejar que la instancia de la encuesta de objetos para datos almacenados en búfer / búfer vacío cuando se encuesta
  • Otro (?)
¿Fue útil?

Solución

Definitivamente limitaría la tasa de actualización. Para tales aplicaciones, una cada 300 ms suele ser suficiente.

Basado en eso, una buena implementación sería un subproceso de trabajo que lea el puerto serie y lo agregue a un búfer. El hilo de la interfaz de usuario puede usar un temporizador para consultar los datos y actualizar la pantalla.

Usando subprocesos separados, el subproceso de trabajo puede ejecutarse con mayor prioridad, por lo que los picos de carga pueden retrasar las actualizaciones de visualización, pero no se pierden datos.

Un truco adicional es no usar un temporizador fijo, sino reiniciar el temporizador una vez completada la actualización. Por lo tanto, si la actualización lleva un tiempo considerable, p. Debido a la alta carga del sistema, sus actualizaciones se ralentizan, reduciendo efectivamente la carga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top