我正在尝试通过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"))