监控PySerial中的RTS/DTR线路



我正在进行一个RS232软件项目,该项目使用RTS/DTR作为某些软件的控制输入。有没有办法在PySerial中监控RTS或DTR线路的状态变化?我很难找到在Python中监控RTS或DTR行的示例,目的是在设置RTS/DTR行时基本上触发一个函数。

谢谢!

RS232C的输入信号为CTS/DSR/RI/CD。

您和您的项目成员可能误解了RS232C规范。

RTS/DTR是由您制作的程序控制的输出信号,而不是输入信号。

你可以知道你设置了什么,或者默认状态是什么,即使你没有设置它,但它不会因为外部因素而改变。

pySerial API

RTS/DTR信号线可能由于诸如线路中断或与某物短路之类的硬件问题而发生不希望的变化,但是程序不可能知道它,并且它不处于可以通信的状态。


另一种可能性是启用了硬件流控制,并且串行端口输入缓冲区设置得较小,或者即使缓冲区设置为较大,对等端也会发送更多数据。

设备驱动器自动控制信号线以防止输入数据溢出。

这是由于缺乏对串行端口设置和程序规范的考虑,并被认为是正确的编程,以尽可能防止这种状态的变化。


PySerial似乎没有事件驱动的编程接口。

cts
dsr

你写道,当CTS/DSR打开时,你想调用一个函数,但相反,当你调用该函数时,你可以检查CTS/DSR-的状态?

如果您真的想用CTS/DSR信号执行事件驱动的编程,则可以创建一个软件循环,将CTS/DSR信号作为主例程进行监控,检测CTS/DSRs信号从OFF变为ON的时间,并调用相应的函数。

请注意,如果主例程的CTS/DSR信号监控在睡眠之间没有间歇性执行,则CPU将变得繁忙,系统将无法正常运行。

最新更新