当前位置:  开发笔记 > 编程语言 > 正文

检查串口是否正在侦听

如何解决《检查串口是否正在侦听》经验,为你挑选了1个好方法。

我有一个Arduino通过串口发送和接收带有Python脚本的指令.

Arduino处于按钮状态,当它被按下时,它将通过串口发送消息到Python脚本并等待响应.(通过Serial.available()).它运作良好.

但是,如果Python脚本由于某种原因而崩溃(理想情况下它将在后台运行,因此无法轻松检查),Arduino将永远等待,即使脚本重新启动也将无法使用.

有没有办法让我的Arduino检查串口上是否有东西在监听?(如果不是,请用闪光灯等提醒我)或者这不是串口如何工作?最糟糕的情况我想我可以使用超时,虽然这不是理想的.



1> mdb..:

通过使用DSR/DTR引脚,您检测对方是否有某些内容的能力有限.

当您打开脚本运行的机器上的串行端口时,它应该提升其DTR引脚(或者您应该能够说服它这样做:用于驱动COM端口的库的文档应该告诉您如何) .

然后,在您的Arduino上,您可以定期检查其DSR引脚(假设调制解调器的零调制解调器接线,其中PC DTR引脚连接到Arduino上的DSR + CD),并处理任何"无人连接"方案你觉得合适的方式.

这种方法的一个问题是,当PC脚本崩溃/停止响应时,它可能无法关闭串行端口,使得DTR引脚保持启用状态,就好像一切都还可以.此外,由于串行线路上的错误,您的脚本可能会错过来自Arduino的消息.

出于这个原因,您应该始终在接收例程中实现超时:即使有一方在另一端收听,也不能保证它已收到您的消息(或者它的响应将完整地告诉您).

如果发生超时,则至少重新发送一次消息(假设DSR被引发)使您的协议更可靠.


在接收例程中实现超时:即使有一方在另一端收听,也不能保证它已收到您的消息(或者它的响应将完整地告诉您).
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有