我相信这是一个简单的问题,但我是个业余爱好者,所以我来了。你知道吗
尝试使用obdpython库与我的车辆通信。我有一个bluetooth OBDII适配器,我可以自己发送单个命令,如自述文件的基本用法部分所述,并获得响应。你知道吗
我的问题是我有一个要发送的命令列表。我尝试使用for循环遍历每个命令并在屏幕上打印响应。你知道吗
import os
import time
import obd
def clear_Screen():
os.system('cls' if os.name == 'nt' else 'clear')
connection = obd.OBD("COM7")
pids = [ 'RPM' , 'ENGINE_LOAD' , 'COOLANT_TEMP' , 'RUN_TIME' ]
try:
while True:
time.sleep(1)
clear_Screen()
for i in pids:
cmd = "obd.commands." + i
response = connection.query(cmd)
print i , ": " , (response.value)
except KeyboardInterrupt:
exit()
我如何构建cmd变量有一个问题,因为我从每个查询得到的响应是命令不受支持,但我知道它们是受支持的。你知道吗
如果我打印cmd而不是使用命令.查询(cmd)它的打印方式和我指定的完全一样。obd.commands.RPM所以我不明白为什么这样不行。你知道吗
在你的问题中你说:
实际上,在你看来,cmd只是一个字符串。因此,如果您想要实际评估的态度,应该使用
getattr
:eval()
和exec()
都是不安全的,所以千万不要使用它们。你知道吗尝试将分配给cmd的内容包装到
eval()
:相关问题 更多 >
编程相关推荐