我使用 atmega32 与 SIM808 通信。当模块发送一个包含超过 16 个字符的字符串时,atmega32 只接收最后 16 个字符。它可以在字符较少的情况下正常工作。我使用 16*2 字母数字 LCD 来显示接收到的数据。我尝试使用 strncpy() 提取部分长字符串。然后我将提取的部分发送到 LCD,但 LCD 什么也没显示。我认为 AVR 有问题,而不是 LCD。我能做些什么?我只是使用 codevision UART 库编写了 c 代码。这是主要代码:
printf("AT+CGPSINF=2\r");
scanf("%s",response);
scanf("%s",response2);
scanf("%s",response3);
scanf("%s",response4);
scanf("%s",response5);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response2);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response3);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response4);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response5);
delay_ms(1000);
strncpy(response3,response3 + 18,26 - 18);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(response3);
delay_ms(1000);
response3[200] 用于接收长字符串。