【发布时间】:2019-11-04 09:01:17
【问题描述】:
我正在尝试在 python 和 atmega128 avr c 脚本之间发送和接收数据。我得到了我不理解的奇怪类型的字节。
我尝试在 python 代码中读取数据,但结果看起来有点像 b'\x00' b'\x06' b'\x9e' b'f' b'\x06'。我的代码有什么问题?
这是我的atmega主线
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;
这是我读取数据的python脚本
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'
但是我期望的输出是
"Initialization Complete!"
附:这是UART实现
void uart_send_byte(unsigned char byte)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1 = byte;
}
void uart_send_string(unsigned char *str, unsigned char len)
{
int i;
for(i=0;i<len;i++) {
if(!(*(str+i)))
break;
uart_send_byte(*(str+i));
}
}
【问题讨论】:
-
注意:您发送
\n\r而不是\r\n。这是故意的吗? -
@Adam.Er8 没有错误。我刚刚切换到
\r\n,但结果仍然很奇怪。有什么想法吗? -
为什么这很奇怪?你期待什么不同?
-
@MadPhysicist 我期待输出“初始化完成!”
-
可能你的端口设置不正确。
标签: python c avr pyserial usart