Pergunta

Preciso para fazer o gráfico dos dados que fluem (9600), que está a chegar em 2-4 byte pacotes a partir de uma porta de série. Os pacotes precisam ser processados ??antes de gráficos. Atualmente, eu estou levantando um evento em cada pacote completo, que está causando problemas de capacidade de resposta no formulário gráfico.

Qual é a melhor solução para esse problema:

  • dados do buffer e dados levantam tamponada em evento em intervalos de tempo (ou seja, de 500 milissegundos)
  • Construção de tampão e deixou instanciar objecto sondagem para dados tampão tamponada / vazio quando inquiridos
  • Outro (?)
Foi útil?

Solução

Eu definitivamente limitar a taxa de atualização. Para essas aplicações, um de cada 300ms geralmente é suficiente.

Com base nisso, uma boa implementação seria um segmento de trabalho que lê a porta serial e adiciona-lo para um buffer. O segmento interface do usuário pode usar um temporizador para consultar os dados e atualizar a exibição.

Usando segmentos separados, o segmento de trabalho pode ser executado em uma prioridade mais elevada, de modo que os picos de carga pode atrasar as atualizações de exibição, mas nenhum dado é perdido.

Um truque adicional é não usar um temporizador fixo, mas reiniciar o temporizador após a atualização for concluída. Assim, se a atualização leva um tempo significativo por exemplo devido à alta carga do sistema, suas atualizações desacelerar, reduzindo efetivamente carga.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top