编码传递参数为串行.编写python



我正在尝试通过xbee从pc发送一些数据到arduino。

我有一个测试包,我知道它构建得很好,它是:

7E 00 7D 33 10 01 00 7D 33 A2 00 40 69 76 DD FF FE 00 00 01 52 B8 DA 41 1A

如果我使用:

ser.write(b'x7Ex00x7Dx33x10x01x00x7Dx33xA2x00x40x69x76xDDxFFxFEx00x00x01x52xB8xDAx41x1A')

我的数据包到达arduino.

但是现在我想通过命令行传递这个包。比如:

python test.py 'x7Ex00x7Dx33x10x01x00x7Dx33xA2x00x40x69x76xDDxFFxFEx00x00x01x52xB8xDAx41x1A'

能够以这种方式更改数据,每次我想要的

I tried with:

ser.write(sys.argv[1])
ser.write(sys.argv[1].encode('ascii'))

其他人尝试但总是失败。

知道我该如何传递数据吗?我认为这个问题与ser.write…的开头b有关

我正在使用python 2.6或2.7…不是3。

这是有效的,但我有一种感觉,有一个更好的解决方案(有;参见编辑):

import ast
import sys
ser.write(ast.literal_eval("'{0}'".format(sys.argv[1])))

我们使用ast模块中的安全literal_eval来计算字符串"'x7Ex00x7D...'"作为python字面量,这得到了我们想要的结果。

编辑:

Ah - 哈!找到了一个更好的解决方案:

ser.write(sys.argv[1].decode("string-escape"))

相关内容

最新更新