刚才在用SerialPort 的Read读取串口数据时,正常情况是读出“AAAA06FA0203011111”类似数据,但是读取后发现无论怎么读总是读一串0出来,
折腾半天,添加上ReadTimeOut事件后,读取出AA0……后面又是一大串的0
实在坑爹,纠结半天,发现原来是串口返回数据需要一定时间,因此,在对串口发送查询指令后,不能立即就去读取数据,需要一段时间的缓冲与等待。
采用了最简单的解决办法,在读取之前加一段while循环
代码如下:
byte[] buf = new byte[9];
//需要等待一段时间才能读取,否则没有串口来不及返回数据,读取的全部是0
int i = 0;
while (i < 10000000) i++;
comm.ReadTimeout = 1000;
comm.Read(buf, 0, 9);
本文分享了在使用SerialPort组件读取串口数据时遇到的问题及解决方案。当尝试读取特定格式的数据时,发现读取到的全是0。经过调试发现是由于串口返回数据需要时间延迟导致。通过增加等待时间并在读取前使用while循环,成功解决了这一问题。

4万+


被折叠的 条评论
为什么被折叠?



