Pyserial 检测中断条件

Posted

技术标签:

【中文标题】Pyserial 检测中断条件【英文标题】:Pyserial detect break condition 【发布时间】:2013-11-14 06:48:12 【问题描述】:

有什么方法可以检测 Pyserial 中的 RS232 BREAK 条件吗?我可以看到发送中断的选项,但没有接收选项。

谢谢

【问题讨论】:

【参考方案1】:

我不知道一种简单的方法,尤其是在 python 中,中断是一个事件,它应该用于重置通信。

AFAIK pySerial 支持发送 Break,但不支持接收。

你可以使用WaitCommEvent(),但不是那么容易MSDN WaitCommEvent

来自 MSDN:

WaitCommEvent 函数等待指定通信设备发生事件。此函数监视的事件集包含在与设备句柄关联的事件掩码中。

BOOL WaitCommEvent(
    HANDLE  hCommDev,       // handle of communications device
    LPDWORD  lpfdwEvtMask,  // address of variable for event that occurred  
    LPOVERLAPPED  lpo,      // address of overlapped structure );

hCommDev 标识通信设备。 CreateFile 函数返回此句柄。

lpfdwEvtMask 指向一个 32 位变量,该变量接收一个指示发生的事件类型的掩码。如果发生错误,则该值为零;否则,它是以下值之一:

你需要这个活动:

EV_BREAK 在输入时检测到中断。

你在这里有一个example in c++

【讨论】:

以上是关于Pyserial 检测中断条件的主要内容,如果未能解决你的问题,请参考以下文章

pyserial在检测list_ports速度过慢的解决方案

python的pyserial模块

PySerial:如何在串行线上发送 Ctrl-C 命令

Pyserial操作串口

pySerial:端口只工作第一个命令

pyserial:没有名为工具的模块