试图在Python

时间:2016-08-30 17:46:54

标签: python

我通过rs232与电源通信。我发送例如时,我可以毫无问题地通信:

port.write("\x31")

但是如果我有一个字符串作为变量

teststring='"\\x31"'     

(打印为“\ x31”)

我试试:

port.write(teststring)

它不会将命令发送到电源。我试过了:

port.write(bytes(teststring,'utf-8'))

port.write(teststring.encode('utf-8'))

但它仍然以某种方式发送不同于输入文本。我需要能够更改此变量,因此我不能只对文本进行编码。 任何帮助表示赞赏!

使用下面的评论,我现在使用整数

testint = 31 如果我打印

chr(testint)我得到一个奇怪的方框,其中顶行为00,底部为1F。我现在需要做的是将31转换为0x31,所以我可以使用chr(0x31),当打印时产生1.希望.write命令将chr(0x31)视为与“\ x31”相同? / p>

1 个答案:

答案 0 :(得分:0)

你的例子中的

teststring正在逃避反斜杠;您有"\\x30",而不是"\x30""\x30"是长度为1的字符串,包含字节0x30; "\\x30"是一个长度为4的字符串,其中包含字符\x30。删除teststring中的第一个斜杠应该与使用port.write("\x30")完全相同。