刚才在用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);