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

想请教各位高手串口接收超时怎么写

    我初学C#,现在遇到了一个很棘手的问题:我软件向主机通过串口发一串数据,如果主机在5秒内无数据返回则判断其超时,这段程序该怎么写?
    这是我的接收程序:
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int i = 0; 
            i = this.serialPort1.BytesToRead;
            CheckForIllegalCrossThreadCalls = false;
            this.textBox1.Text += this.serialPort1.ReadExisting();
        }

     --------------------编程问答-------------------- 你可以设置SerialPort.ReadTimeout属性
但是这个属性只在你使用阻塞的方式调用Read方法的时候起作用,当然你可以自己开一下线程去处理Read
如果想要在DataReceived事件里处理里TimeOut只能自己用Timer去做 --------------------编程问答-------------------- 请问有没有相关的例子给我参考下? --------------------编程问答-------------------- 用timer,5秒检查一次标记,如果收到数据(datareceived事件中设置标记为true),则在timer中检查,反之在timer中发现标记没有被设置过。则说明没数据。时间也到了。 --------------------编程问答--------------------  在接收事件里写啊
 定义一个标识 ,用来描述有没有接收
定义一个标识,描述是否超时
 定义一个timer,用来管理超时标识,在发送命令后启动它
如果接收标识为假,并且超时标识为真 ,则超时
至于5秒 ,在  timer里加个计数器就行了
--------------------编程问答-------------------- 谢谢大侠,我问题解决了! --------------------编程问答-------------------- 怎么解决的啊? --------------------编程问答--------------------
引用 3 楼 wuyazhe 的回复:
用timer,5秒检查一次标记,如果收到数据(datareceived事件中设置标记为true),则在timer中检查,反之在timer中发现标记没有被设置过。则说明没数据。时间也到了。


效率可能会出现问题
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,