spcomm编的串口程序,如果判断串口未插设备?
我用spcomm编的串口程序,功能都实现了,但现在遇到一个问题,如果程序运行中拔掉串口的连接设备,此时向串口写数据Comm1.WriteCommData不报错而且返回值也为真,接收部分Comm1ReceiveData并不执行,也就是说无法通过写数据或读数据的方式判断串口是否连接有设备,有什么办法可以判断串口是否连接设备呢?
[解决办法]
关闭重新打开呢?会抛异常吧
[解决办法]
我试过了,如果程序打开设备后,然后拔掉设备,WriteCommData会返回False,不会返回True
[解决办法]
是不是你程序里把spcomm的异常全部屏蔽了?
[解决办法]
"有什么办法可以判断串口是否连接设备呢?"
只能通过协议和设备保持联系。通过检测某一电位;或者传送数据之前,发一串握手数据
[解决办法]
我用的是这个版本: Version 2.58 2004/10/8
[解决办法]
“现在的问题在于发数据握手也好于设备通信也好,当串口未连时,WriteCommData之后就没有回应了,返回值也是真,但ReceiveData不执行,无法进行判断~”
是这样的:当串口被成功打开,只要有数据需发送,数据就会被发送出去。通过writefile函数的返回值,是没法判断下面有没有连接设备的。
你的问题 一个比较好的方案是:串口所连的设备一直置RTS或DTR为高电位,pc机监测CTS或DSR信号( 用GetModemState函数 ),这样的话,如果CTS或DSR为低,就表明设备没连上。另一个办法,在发送数据之前,pc机发一串握手数据,如果在约定的时间内没有握手数据返回,则可以认为设备未连接。