通过串行发送十六进制和二进制数据

时间:2019-01-27 20:09:53

标签: python python-3.x

考虑此功能,该功能构造一个数据包并通过USB串行将其发送到can总线:

def _write_to_can(id, data):
  num_bytes=len(data)
  send_buf = bytearray([0xAA,0xE0|num_bytes,])
  for byte in reversed(id):
      send_buf.append(byte)
  for byte in data:
      send_buf.append(byte)
  send_buf.append(0x55)
  print(send_buf)
  #serial.write(send_buf)

这两个简单的测试输入:

_write_to_can(bytes.fromhex("1F 01 10 51"),  bytes.fromhex("85 15 08 01"))
_write_to_can([0x1F,0x01,0x10,0x51], [0x85,0x15,0x08,0x01])

如果运行(python3),似乎会输出相同的字节数组(至少对我来说是如此):

bytearray(b'\xaa\xe4Q\x10\x01\x1f\x85\x15\x08\x01U')
bytearray(b'\xaa\xe4Q\x10\x01\x1f\x85\x15\x08\x01U')

但是只有第一个可以正常工作-另一端的设备可以响应,而第二个则没有任何反应。我是python和整个串行二进制十六进制的新手,所以我一定犯了一些非常愚蠢的错误?

0 个答案:

没有答案