我正在从事一个RS232软件项目,该项目使用RTS/DTR作为某些软件的控制输入。是否有一种方法来监视RTS或DTR线路在PySerial中的状态变化?我很难找到在Python中监视RTS或DTR行的例子,目的是在设置RTS/DTR行时从本质上触发一个函数。
谢谢!
发布于 2020-04-18 22:59:27
RS232C的输入信号为CTS/DSR/RI/CD。
您和您的项目成员可能误解了RS232C规范。
RTS/DTR是由程序控制的输出信号,而不是输入信号。
您可以知道您已经设置了什么,或者默认状态是什么,即使您没有设置它,但是它不会因为外部因素而改变。
RTS/DTR信号线可能由于硬件问题(如线路中断或短路)而发生不理想的变化,但程序不可能知道,也不可能处于通信可能的状态。
另一种可能是启用硬件流控制,并设置较小的串口输入缓冲区,或者即使设置缓冲区较大,对等方也会发送更多数据。
设备驱动程序自动控制信号线以防止输入数据溢出。
这是由于缺乏对串口设置和程序规范的考虑,并被认为是正确的编程,以尽可能防止这种状态变化。
PySerial似乎没有事件驱动的编程接口。
您写过要在打开CTS/DSR时调用函数,但相反,调用该函数时可以检查CTS/DSR的状态吗?
如果您真的想使用CTS/DSR信号执行事件驱动的编程,则可以创建一个软件循环,以监视CTS/DSR信号作为主程序,检测CTS/DSR信号从OFF到ON时的时序变化,并调用相应的函数。
请注意,如果主例程的CTS/DSR信号监视在睡眠期间不间歇执行,CPU将变得繁忙,系统将无法正常工作。
https://stackoverflow.com/questions/61295394
复制相似问题