0

首先让我先介绍一下我是 python 新手,这里没有自我。我有这个代码,我从各个站点拼凑而成,最终目标是将十六进制代码输出到 OBD-II 芯片并等待响应。此响应(也是 HEX)被转换为十进制处理并发送到输出。很简单吧?

嗯,有两个问题。

其中一个是 .readline() 删除响应的第一个字母。

例如,如果我想要“>Elm327”,我会返回“>lm327”。

另一个更大的问题是当我使用 .readline() 时,如果我使用下面的代码,我只会收到我发送的请求:

serialport.write("01 0D \r")
speed_hex = serialport.readline().split(' ')
speed = float(int('0x'+speed_hex[6:8], 0 ))
print 'Speed: ', speed, 'km/h'`  

我想 .readline 返回41 0D 15而不是我得到类似的东西E\r\r01 0D \r \r"

speed_hex = serialport.readline().split(' ')  

这也会返回一个错误,但我会为此单独发布一篇文章。

有什么想法吗?谢谢

4

1 回答 1

0

我怀疑您的串行端口设置与主板的设置不完全匹配尝试使用终端,直到您获得确切的设置然后使用它们。

注意,您不需要预先添加 0x 来转换可以使用 int(s, 16) 的十六进制值,其中 s 是您的子字符串。

于 2013-07-27T14:19:48.463 回答