我设置了一个mega16(16位AVR微控制器)从串口接收数据
它连接到蓝牙模块 HC-05 以获得可接受的数量
由我的 android 应用程序发送,一个 android 应用程序以 a 的形式发送一个数字
最大长度等于 10 位的字符串数组。问题来了
在接收数据时,存在一个或两个未知字符(?)
接收到的字符串的开头。我必须从
字符串的开头在存在的情况下。这个问题只针对HC-05。我的意思是我在发送号码时没有问题
另一个微控制器而不是 android 应用程序。
这是我通过手机发送的:
“430102030405060\r”
以及微控制器串口接收到的内容:
“??430102030405060\r”或“?430102030405060\r”
这是 USART 接收器中断代码:
//-------------------------------------------------------------------------
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if (data==0x0D)
{
puts(ss);printf("\r")
a=0;
memset(ss, '\0', sizeof(ss));
}
else
{
ss[a]=data;
a+=1;
}
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index++]=data;
if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0) rx_buffer_overflow=1;
else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
}
endif
}
}
//-------------------------------------------------------------------------
如何从 codevision 中接收到的数据的开头删除多余的字符(?)?