Почему atmega32 получает только последние 16 символов строки?

Я использую Atmega32 для связи с SIM808. когда модуль отправляет строку, содержащую более 16 символов, atmega32 получает только последние 16 символов. это работает хорошо с меньшим количеством символов. Я использую 16*2 буквенно-цифровой ЖК-дисплей для отображения полученных данных. Я попытался извлечь часть длинной строки, используя strncpy(). Затем я отправил извлеченную часть на LCD, но LCD просто ничего не показывает. Я думаю, что-то не так с AVR, а не с LCD. Что я могу сделать? я написал код c просто с помощью библиотек Codevision UART. вот основной код:

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 ответов

Другие вопросы по тегам