用VS.Net 2005的SerialPort类写了一个程序,别的都处理好了,但是在单片机关闭时,也就是没有数据通讯了,软件没有任何反映。也就是如果向串口写数据,如果下位机没有打开,或无法通讯,那么根本就不触发DataReceived事件。但为了给用户一个提示,如何判断下位机的数据中断?
解决方案 »
- 筛选表中的“是否”字段?
- 在系统分析阶段,用户要求设计软件界面,大家一般用什么设计?
- 关于多线程的问题
- 高分求!关于动态绑定Linkbutton的问题
- 请问winform程序中datagrid中怎么给中间某些列加横向滚动条?
- 请问VS。NET2003带的PDA模拟器可以调试串口通讯的程序吗,有用C#开发过PDA程序的资料吗,谢谢
- 为什么随机生成的服务号4组数字是一样的?
- WPF怎么可以弄出一个可以放多个TextBlock的Button
- WINDOWS服务的问题
- 关于C#中使用SQL查询语句的小问题(在线等待),急!!!!!!!!!!!-------------
- Dataedit在程序运行后显示周几的的地方出现“星星星星星星星”
- CLC 活动WEB页脚本简介
可以用多试几次,每次都超时,就说明无法通讯.
我也想到你这种方法,但怎么判断是否超时?
catch(IOException e)
{
//计数
//计数次数到,中断,否则再通讯一次
}
//记住在通讯成功后,把计数置零.
这个想法挺好,我也是这样想的,用两个线程,在写的时候也同时读,如果超时了就说明无法通讯了
能具体点么?“单片机中每隔一定时间发个同步信号回来”,是要改单片机程序?
单片机是够呛能改了,只是我觉得发个命令看返回值就可以。但让我极度郁闷的是,我用的是SerialPort控件,已经用DataReceived来接收数据了。如果我在发时用SerialPort.ReadLine这类读取指令就会异常,提示我DataReceived和ReadLine不是同线程创建。但我这里还不能用多线程,不然分步执行我得到这个结果就没有用了