我不知道这是一个愚蠢的问题,但我真的很难解决这个问题。
我使用obd库进行编码。 现在我的问题是我的变量的持续实现。 例如,一个变量输出汽车的实际速度。 此变量必须每秒或2秒更新一次。要执行此更新,我必须运行2行代码
cmd = obd.commands.RPM
rpm = connection.query(cmd)
但我必须检查一些while循环和if语句中的rpm变量。 (实时)
有没有机会完成这件事? (另一个类或线程或其他东西)这将帮助我在编程项目中实现跨越式发展。
谢谢:)
答案 0 :(得分:0)
使用Async接口而不是OBD:
由于标准query()函数是阻塞的,因此它可能会对UI事件循环造成危害。为了解决这个问题,python-OBD有一个Async连接对象,可以用来代替标准的OBD对象。 Async是OBD的子类,因此继承了所有标准方法。但是,Async添加了一些以控制线程更新循环。此循环将使您的命令值与车辆保持同步。这样,当用户查询汽车时,会立即返回最新的响应。
通过调用start()和stop()来控制更新循环。要订阅更新命令,请使用您请求的OBDCommand调用watch()。由于更新循环是线程化的,因此只能在循环停止时监视命令。
import obd connection = obd.Async() # same constructor as 'obd.OBD()' connection.watch(obd.commands.RPM) # keep track of the RPM connection.start() # start the async update loop print connection.query(obd.commands.RPM) # non-blocking, returns immediately
http://python-obd.readthedocs.io/en/latest/Async%20Connections/