所以我有点无知(也许?)问题。我第一次在串行设备上写东西。我有一个帧[12,0,0,0,0,0,0,0,0,7,0,X,Y]我需要发送。X和Y是校验和值。我对使用pyserial模块的理解是,我需要将这个框架转换成字符串表示。好吧,没关系,但我不知道东西应该是什么格式。我试过了a = [12, 0, 0, 0, 0, 0, 0, 0, 7, 0, X, Y]
send = "".join(chr(t) for t in a)
但是我的困惑来自这样一个事实:当使用chr时,X和Y会转换成奇怪的字符串(假设它们是ascii表示)。例如,如果X为36,则chr(X)为“$”而不是“\x24”。有没有办法让我得到一个代表'\xnn'值而不是ascii码的字符串?让我困惑的是12和7正确地转换为'\x0b'和'\x07'。我错过什么了吗?在
更新:
所以可能是我不太明白串行写入是如何完成的,或者我的设备对我有什么期望。这是我的C代码的一部分正在工作:
^{pr2}$
Python:frame = [11, 0, 0, 0, 0, 0, 0, 0, 9] + [crc1, crc1]
senddata = "".join(chr(x) for x in frame)
IEC = serial.Serial(port='/dev/ttyS2', baudrate=1200, timeout=0)
IEC.send(senddata)
IEC.read(18) # number of bytes to read doesn't matter, it's always 0
我这样做对吗?很明显,你不能确切地说出来,因为它是设备特定的,我不能给出太多的细节。但这是正确的格式吗串行发送()需要数据?在