想请教各位高手串口接收超时怎么写
我初学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里加个计数器就行了
--------------------编程问答-------------------- 谢谢大侠,我问题解决了! --------------------编程问答-------------------- 怎么解决的啊? --------------------编程问答--------------------
效率可能会出现问题
补充:.NET技术 , C#