如何将 python 中的十六进制数发送到 UART?
how to send an hexadecimal from python to the UART?
我需要了解如何从 UART 以十六进制格式发送消息,例如:
味精='99' +'70b4c55ad8cdb7806a7b043069c4e0d8'
'99'是区分消息的开始,其余是数据。
作为
导入序列号
导入时间
#serial port
ser = serial.Serial(
port='COM4',\
baudrate=230400,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
msg=b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
ser.write(msg)
time.sleep(0.4)
while True:
print(ser.read(30))
ser.close() # close ports
但我不明白错误:
msg= b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
^
IndentationError: unexpected indent
然后我需要使用c语言进行比较,将第一个接收到的字节99与0x99进行比较。
int lenght = dev_uart_ptr->uart_read((void*)buffer,34 );
if (lenght<34)
{
if buffer [0]='0x99'
}
提前致谢。
您似乎正在加载到 buf
但在您的 c 代码中使用 buffer
。
您正在向缓冲区读取 34 个字节,然后检查长度是否小于 34。应该不会正常工作。从你的例子来看,它应该是 17。
Encode 不会将 msg
转换为十六进制字符串。它会将每个字符视为一个字符,即 '0'
是 48
,'1'
是 49
等
使用
创建字节对象
msg = b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
ser.write(msg)
我需要了解如何从 UART 以十六进制格式发送消息,例如: 味精='99' +'70b4c55ad8cdb7806a7b043069c4e0d8'
'99'是区分消息的开始,其余是数据。 作为 导入序列号 导入时间
#serial port
ser = serial.Serial(
port='COM4',\
baudrate=230400,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
msg=b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
ser.write(msg)
time.sleep(0.4)
while True:
print(ser.read(30))
ser.close() # close ports
但我不明白错误:
msg= b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
^
IndentationError: unexpected indent
然后我需要使用c语言进行比较,将第一个接收到的字节99与0x99进行比较。
int lenght = dev_uart_ptr->uart_read((void*)buffer,34 );
if (lenght<34)
{
if buffer [0]='0x99'
}
提前致谢。
您似乎正在加载到
buf
但在您的 c 代码中使用buffer
。您正在向缓冲区读取 34 个字节,然后检查长度是否小于 34。应该不会正常工作。从你的例子来看,它应该是 17。
Encode 不会将
msg
转换为十六进制字符串。它会将每个字符视为一个字符,即'0'
是48
,'1'
是49
等
使用
创建字节对象msg = b'\x99\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x04\x30\x69\xc4\xe0\xd8'
ser.write(msg)