c#serialport控件做串口助手,自动扫描出2个串口,打开没接设备的串口,发送接收数据事件时会卡死。
台式机,自带一个COM1串口,我通过USB转串口扩了一个,用SerialPort.GetPortNames()扫描出COM1和COM4,因为我设备是接在COM4上面的,但...
台式机,自带一个COM1串口,我通过USB转串口扩了一个,用SerialPort.GetPortNames()扫描出COM1和COM4,因为我设备是接在COM4上面的,但是呢,选择COM1,然后单击一个“打开串口”按钮,一样可以打开COM1。我现在想做个处理:因COM1上没有连接设备,所以当我尝试打开这个串口时,能弹出一个错误提示框,不知道怎么做。请高手详解,最好是有代码。
(我想过的一个处理方法就是,在点击“打开串口”时,发送一个数据出去,然后检查串口接收到的数据,如果能接受到正确的识别数据,那么就正常连接,否则,弹出“串口连接异常”对话框。可能自己水平不够,没有试验成功。)
求高手指点,不甚感激。如果能详加指点串口设计,愿以物质换取,我对这个很感兴趣。 展开
(我想过的一个处理方法就是,在点击“打开串口”时,发送一个数据出去,然后检查串口接收到的数据,如果能接受到正确的识别数据,那么就正常连接,否则,弹出“串口连接异常”对话框。可能自己水平不够,没有试验成功。)
求高手指点,不甚感激。如果能详加指点串口设计,愿以物质换取,我对这个很感兴趣。 展开
2个回答
展开全部
没有这样的检测技术,因为不同外设虽然都用串口协议,但是对于不同的输入,即使外设链接上了也不一定会有返回数据,而串口本身并没有自检的功能,所以串口只能被打开,无法准确知道是否有外设连上了,即使楼上说的用超时也不行
追问
我也是因为下载了一个串口调试助手,发现那哥们的设计很好。
举个例子,我COM1空着的,我故意选它,然后开始通讯,然后就会弹出一个错误提示对话框。
那个设计很好,就是不知道怎么实现的。
追答
你说的开始通讯是指向串口写入东西是吧,这个的话用写入超时来做,定义串口的WriteTimeout属性,你可以设定为5000(即5秒),当超过5秒仍未成功写入的话,提示写入失败
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询