我通过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>
答案 0 :(得分:0)
teststring
正在逃避反斜杠;您有"\\x30"
,而不是"\x30"
。 "\x30"
是长度为1的字符串,包含字节0x30; "\\x30"
是一个长度为4的字符串,其中包含字符\
,x
,3
和0
。删除teststring
中的第一个斜杠应该与使用port.write("\x30")
完全相同。