!如何判断串口是否有通讯

求助!怎么判断串口是否有通讯?
我比较常用的串口控件是SPComm和CPort,请问:
1.通过串口与机器通讯,假设拔掉串口线,上位机怎么判断与串口的连接已经断开?
2.假设通过COM3连接串口,一般编写上位机程序的时候,点击“打开串口”按钮都能正常打开,除非串口不存在或被占用的情况下才会提示打开错误,请问怎么在点击“打开串口”时判断上位机是否和机器正确连接(只有正确连接后才能打开串口,进行通讯)?
谢谢!

------解决方案--------------------
主动识别下位机需要有握手协议,以应答上位机的识别
没有握手协议,也不能确定串口上接的设备是你所需要的.
------解决方案--------------------
1、定时发心跳,如果超过时间没有心跳则判断断开。
2、打开串口后马上发一个心跳,有返回则认为正常。

心跳一个字节就够,下位机收到马上返回同样一个字节。
------解决方案--------------------
1.串口没法感应远程设备的连接和断开的,所以拔掉之后你程序没法知道,你需要计个时,看看已经有多少时间设备没有和你通讯了,做个通讯超时故障来退出程序。

2.串口只要闲着你就能打开,打开之后别的设备有没有连进来你也没法知道,串口下的通讯协议很多,协议也很松散,想知道设备有没有连接好,要么发个消息试试设备有没响应,要么就在串口下收收数据,看有没有数据送过来。