PySerial,检查Serial是否已连接

时间:2017-08-11 12:07:01

标签: python raspberry-pi pyserial

所以我正在开发一个项目,它通过USB转串口连接器将Raspberry Pi连接到串行设备。我正在尝试使用PySerial来跟踪通过连接的串行设备发送的数据,但是存在问题。

目前,我已经设置了我的项目,以便每5秒调用一次我创建的自定义port.open()方法,如果端口实际打开,则返回True。这样我就不必在最初启动程序时插入串行设备了。

但是我也想设置它,以便程序也可以检测我的串行设备何时断开连接,然后重新连接。但我不知道如何做到这一点。

如果我尝试使用PySerial方法isOpen()来检查设备是否在那里,只要插入USB转串口连接器,即使我没有串口设备,我总是让它返回true连接到连接器本身。

1 个答案:

答案 0 :(得分:0)

您可以通过检查其中一条RS232控制线(CTS,DSR,RI或CD(所有这些都在PySerial中作为属性公开)的状态来判断设备是否已物理插入。并非所有USB串行适配器都支持这些。

如果与设备的唯一连接是TX / RX线路,则您的选择非常有限:

  • 向设备发送命令,看它是否响应。希望它的协议包含为此目的的无操作命令。
  • 如果设备定期发送数据而不需要显式命令,则在收到数据时保存时间戳,如果设备明显长于上次接收后的时间段,则返回False。