2

我使用 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] 用于接收长字符串。

4

0 回答 0