为什么atmega32仅接收字符串的最后16个字符?

时间:2018-09-08 21:30:35

标签: c uart atmega codevisionavr

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

0 个答案:

没有答案