【问题标题】:Python constantly refresh variablePython不断刷新变量
【发布时间】:2016-10-26 20:11:28
【问题描述】:

我不知道这是不是一个愚蠢的问题,但我真的在努力解决这个问题。

我正在使用 obd 库进行编码。 现在我的问题是我的变量的持续实现。 例如,一个变量输出汽车的实际速度。 该变量必须每 1 秒或 2 秒更新一次。要进行此更新,我必须运行 2 行代码

cmd = obd.commands.RPM
rpm = connection.query(cmd)

但我必须在一些 while 循环和 if 语句中检查 rpm 变量。 (实时)

有没有机会完成这件事? (另一个类或线程或其他东西)它真的会帮助我在我的编程项目中取得飞跃。

谢谢:)

【问题讨论】:

  • 你能把这两行放到current_rpm 方法中吗?只需在循环中使用 current_rpm() 而不是 rpm

标签: python real-time obd-ii real-time-updates


【解决方案1】:

使用异步接口代替 OBD:

由于标准的 query() 函数是阻塞的,它可能对 UI 事件循环造成危害。为了解决这个问题,python-OBD 有一个异步连接对象,可以用来代替标准的 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多