串口通讯问题请教 串口通讯异常 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通讯线被拔掉,不应该出异常,最多就是数据发不出去,也没有数据返回了而已如果你的串口是USB转串口,USB被拔掉了才会出问题 大牛,如果是正在接收报文的时候,线被拔掉了呢?你应该知道,串口是一个字节一个字节发送,也是一个字节一个字节接收的,不存在所谓数据包的概念正接收一半的时候线路断了,后面的字节就收不到了呗,不会报任何系统错误,最多你最后校验数据的时候判断数据有错误等线路恢复了,你再继续发送数据,接收数据,没有任何影响问题是如果是USB口设备,拔掉了USB口,那么设备就找不到了,你再插上也没用 比如USB驱动里将串口虚拟成COM3那么一开始USB是插好的,你打开COM3,发,收,都没有问题这时如果拔掉了USB口,COM3就不存在了,这时你即使执行关闭COM3的指令也会出问题,没法避免的 而不管你使用vs里封装的SerialPort还是调用windows的api都是用一个引用类型的变量引用串口对象串口对象不存在了之后,这个引用类型的变量就指向null了这时即使重新插上USB口设备,引用类型的对象也不会自动指向新插入的设备而即使你重新new了对象指向COM3,原来的对象其实并没有释放,还处于open的状态,执行close也会出错,因为是null,不能close 不用serialport类,用mscomm32或者串口芯片的api我上次用serialport,留着也不对,关掉也不对,芯片的api也不全,折腾死我了 正常串口即使拔下来,串口也还在,只不过是接收而已usb转的,拔下来串口号就没了,发也不是,关串口也不是。不关串口吧,再插上了还是这个串口号,冲突,蛋疼菊紧 一般情况下USB串口拨掉再重新插上后的COM号是不变的,拨掉后SerialPort会抛异常,这时可以通过这个异常来触发端口检测,用来尝试打开COM口 一般情况下USB串口拨掉再重新插上后的COM号是不变的,拨掉后SerialPort会抛异常,这时可以通过这个异常来触发端口检测,用来尝试打开COM口 COM号有时候确实不变,那是你把USB设备插回同一个USB口的情况,如果插到另外的口,就变了而且拔下USB设备并不会抛异常,如果你使用的是回调函数的话除非拔下USB设备后,又对设备进行操作了,比如OPEN,CLOSE这时才会出异常 线程与锁的疑问; linQ 如何实现多条件查询 Winform中DataGridView中怎么实现底端合计 如何获取事件已定制方法名? 在水晶报表report.rdlc中加入外部图像 200分开帖讨论留言群发工具的工作原理 2个小问题 请赐教!!! 请问我网页上添加的文章的字怎么都跑到页面的右侧了啊? 如何将Web项目发布到Win98的机器上,多谢! C# 数组追加问题,类似于变量 sum+=sum+1 IIS ARR URLREWRITE 设置后,不能跨域redirect 【急!!!】请教,WIN7下如何用shellexecute 打开一个文件,在WINXP下很正常,在WIN7下就不行了
如果你的串口是USB转串口,USB被拔掉了才会出问题
你应该知道,串口是一个字节一个字节发送,也是一个字节一个字节接收的,不存在所谓数据包的概念
正接收一半的时候线路断了,后面的字节就收不到了呗,不会报任何系统错误,最多你最后校验数据的时候判断数据有错误等线路恢复了,你再继续发送数据,接收数据,没有任何影响问题是如果是USB口设备,拔掉了USB口,那么设备就找不到了,你再插上也没用
那么一开始USB是插好的,你打开COM3,发,收,都没有问题这时如果拔掉了USB口,COM3就不存在了,这时你即使执行关闭COM3的指令也会出问题,没法避免的
都是用一个引用类型的变量引用串口对象
串口对象不存在了之后,这个引用类型的变量就指向null了
这时即使重新插上USB口设备,引用类型的对象也不会自动指向新插入的设备
而即使你重新new了对象指向COM3,原来的对象其实并没有释放,还处于open的状态,执行close也会出错,因为是null,不能close
我上次用serialport,留着也不对,关掉也不对,芯片的api也不全,折腾死我了
usb转的,拔下来串口号就没了,发也不是,关串口也不是。不关串口吧,再插上了还是这个串口号,冲突,蛋疼菊紧
而且拔下USB设备并不会抛异常,如果你使用的是回调函数的话
除非拔下USB设备后,又对设备进行操作了,比如OPEN,CLOSE这时才会出异常