下位机50HZ的频率传数据,每组数据38
上位机软件收到数据后,经过变换得到传感器的实际值,然后以时间为序在界面上进行更新。求以解决方案目前使用的是.Net 平台下的SerialPort组件,在其DataRecevied事件里缓冲数据,
但发现每次serialPort1.BytesToRead总是大于38好多。请大家不吝赐教,提供方案,若有好的方案本人愿出资酬谢。
上位机软件收到数据后,经过变换得到传感器的实际值,然后以时间为序在界面上进行更新。求以解决方案目前使用的是.Net 平台下的SerialPort组件,在其DataRecevied事件里缓冲数据,
但发现每次serialPort1.BytesToRead总是大于38好多。请大家不吝赐教,提供方案,若有好的方案本人愿出资酬谢。
BytesToRead不管这些的,有数据就接收,有可能里面有多帧数据,也有可能有不完整的数据,例如帧的前面部分字节或帧的后面部分字节,这些都需要自己分割出一帧数据。
一般的处理是先把数据全部连接起来,然后根据数据特征分割出一帧数据,然后调用一帧的处理函数。
如果处理过慢,缓冲区数据越来越多,则需要流量控制,看传输控制协议,一般有xon/xof和rts/cts两种流量控制方式。
1. 定义一个全局的缓冲数组 byte[] recivedBytes;
2. 数据接收部分放在serialport_datarecived事件中,每次收到多少个字节的数据都合并到缓冲数组中。
3. 定义分析数据函数(注意一定要判断头标示,开始进行数据分析)
4. 可以定时执行分析函数,或者在serialport_datarecived事件里调用。