我正在尝试在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!"
答案 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)