我创建了一个脚本来监控串口的输出,每半小时接收3-4行数据 - 脚本运行良好并抓取端口发出的所有内容,在一天结束时是什么事项...
但是,对于一个只监视单个串行端口的程序来说,cpu的使用率似乎相当高,在这个脚本运行时,1个核心的使用率始终为100%。
我基本上在这个问题中运行了代码的修改版本:pyserial - How to Read Last Line Sent from Serial Device
我已经尝试定期轮询inWaiting()函数并在inWaiting()为0时让它休眠 - 我已经尝试了从1秒到0.001秒的间隔(基本上,我可以尽可能不经常开车cpu用法) - 这将成功抓住第一行,但似乎错过了其余的数据。
调整串口的超时似乎对cpu的使用没有任何影响,也没有把监听功能放到它自己的线程中(不是我真的期望差异,但值得尝试)。
答案 0 :(得分:14)
也许您可以发出阻止read(1)
调用,并在成功时使用read(inWaiting())
来获取正确数量的剩余字节。
答案 1 :(得分:0)
系统风格的解决方案会更好吗?创建python脚本并通过Cron / Scheduled Task执行它?
pySerial不应该使用那么多的CPU,但如果它只是坐在那里轮询一小时,我可以看到它可能会发生。与周期性的唤醒和民意调查相比,睡觉可能是更好的选择。