我初学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();
}
这是我的接收程序:
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();
}
解决方案 »
- C#中DataTable里的数据如何修改数据类型
- C#写 类似QQ的企业聊天软件
- C#里WinForm怎么更新SQL数据库啊?
- DataGridView RowIndex 顺序不对
- 请高手帮忙!谢谢了!
- 小问题(不知道 系统错误 捕获 try catch )
- ~~~~~~~~~~~~~~~~新手提问~~~~~~~~~~~~~~~~~~~~~~~
- 请教:在编写自定义的DataGrid控件中如何添加一个Button来执行数据导入到Excel功能???
- 有没有人能解决这个问题啊
- 无法获得页面输入的字符串,是怎么回事啊?
- 帮忙解一下两个textbox控件与button按钮和输出的问题
- C#(新手求助)将数组反向输出
但是这个属性只在你使用阻塞的方式调用Read方法的时候起作用,当然你可以自己开一下线程去处理Read
如果想要在DataReceived事件里处理里TimeOut只能自己用Timer去做
定义一个标识 ,用来描述有没有接收
定义一个标识,描述是否超时
定义一个timer,用来管理超时标识,在发送命令后启动它
如果接收标识为假,并且超时标识为真 ,则超时
至于5秒 ,在 timer里加个计数器就行了