当前位置:编程学习 > C#/ASP.NET >>

还是关于串口编程

发过一次贴,但还是没完全理解,整理一下想问这个问题:
如何在串口发送指令后不用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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,