在avr和python之间串行通信时奇怪的b'\ x'数据

时间:2019-06-21 13:41:59

标签: python c avr pyserial usart

我正在尝试在python和atmega128 AVR C脚本之间发送和接收数据。我收到了我不明白的奇怪字节类型。

我尝试用python代码读取数据,但结果看起来有点像b'\ x00'b'\ x06'b'\ x9e'b'f'b'\ x06'。我的代码有什么问题?

这是我atmega的主线

var dict = [String:Any?]()
dict["someKey"] = nil as Any?

这是我读取数据的python脚本

unsigned char Message[]="Initialization Complete!"; 
unsigned char buff = 0;

MCU_init(); 
UART_init_with_INT();

uart_send_string(Message,25);
uart_send_byte('\n');
uart_send_byte('\r');

return 0;

这是我实际的奇怪结果

import serial

ser = serial.Serial('COM4', 115200)

while(True):
    print(ser.read())

#ser.write(b'hello test')
ser.close()

但是我期望的输出是 b'\x86' b'\x98' b'\xf8' b'\x9e' b'\x86' b'\x9e' b'`' b'f' b'\x9e' b'\x06' b'\x06' b'\x9e' b'\x86' b'\x9e' b'\x98' b'f' b'\x06' b'~' b'\x86' b'\x9e' b'\xfe' b'\x9e' b'\xf8' b'\x9e' b'\x00' b'\x98' b'\x80' b'\xe6' b'\x9e' b'\xe6' b'\x9e' b'\x00' b'\x06' b'\x9e' b'f' b'\x06' b'~' b'f' b'f' b'\x18' b'\x06' b'\xe6' b'\x80'

P.S。这是UART实现

"Initialization Complete!"

2 个答案:

答案 0 :(得分:0)

谢谢大家,我解决了。

我如下更改了我的python代码并完成了!我必须设置端口。

import serial

ser = serial.Serial(
    port='/COM4',
    baudrate=57600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_TWO,
    bytesize=serial.SEVENBITS
)

while(True):
    print(ser.readline())

ser.close()

答案 1 :(得分:-1)

python正在读取的是字节:https://docs.python.org/3/library/stdtypes.html

如果要将字节转换为ascii,则可以使用以下函数进行操作:

ser.read().decode("ascii")

取决于编码,参数可能会更改(例如,可能是utf-8)