C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)_第1张图片

前言

我们在开发串口通信程序时,有时候会遇到比如单片机或者传感器发送的数据速度特别快,比如10ms、20ms发送一次,并且每次发送的数据量还比较大,如果按照常规的写法,我们会发现接收的数据还没处理完,新的数据又发送过来了,这就会导致处理数据滞后,软件始终处理的不是最新的数据,本文就是来介绍如何解决高速通信下数据处理慢的问题,看完本篇文章的内容,以后遇到任何高速通信下数据处理慢的问题你都知道怎么解决,无论是串口通信、socket通信,都不是问题。

1、常规错误写法

我们知道串口数据的接收,在高速通信时,发送方是一直不停的发送数据,所以我们在开发中使用被动接收数据的方式,也就是使用串口的DataReceived事件触发来接收数据,常规的写法如下:
C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)_第2张图片
从上图可知,在常规写法中,我们是在DataReceived事件触发来接收数据,并且接收到数据以后,然后处理数据,处理完数据然后接着接收数据,所以数据处理流程是单线程的,如下:
接收数据-》处理数据-》接收数据
那么很容易看出,处理数据的时候是会占用接收数据的时间的,这就会导致在接收的数据量特别大时,数据来不及处理。

你可能感兴趣的:(C#串口通信从入门到精通,c#,串口通信,高速通信)