还是关于串口编程
发过一次贴,但还是没完全理解,整理一下想问这个问题:如何在串口发送指令后不用Thread.Sleep(xx)的方式实现读取完整的返回指令?不用DataReceived事件。
用循环读取数据还是要用Thread.Sleep(xx)来解决硬件反馈延时问题,有没有完美替代方案? --------------------编程问答-------------------- 最近也是刚接触这方面的,看到网上大多数是用这种方式 --------------------编程问答-------------------- 为什么不用DataReceived事件?
最好硬件返回报文后面有0d0a结尾
然后串口在直接ReadLine()
--------------------编程问答-------------------- 协议我们没法随便改,另外DataReceived不太好处理超时重发 --------------------编程问答-------------------- comm.write(...);//发命令
int tick = Environment.Tick;
List<byte> buf = new List<byte>();
while(Environment.Tick - tick < 5000)//假设5秒等不到有效数据就提示超时
{
int n = comm.BytesToRead;
//追加数据到缓存
byte[] t = new byte[n];
comm.read(t,0,n);
buf.addrange(t);
//判断buf是否是你要的
}
补充:.NET技术 , C#