Создание строки из символов UART - Домашнее обучение C - PullRequest
0 голосов
/ 27 марта 2020

Я работаю с PI C и успешно получил один символ, полученный через UART, однако теперь мне нужно захватить входящую последовательность символов, создать строку и выполнить действие после получения возврата каретки , У меня есть некоторый предыдущий опыт работы с PHP, и я подумал, что все будет гораздо проще, чем оказалось.

Я изменил свой простой код с работающими функциями UART, чтобы попытаться объединить полученные символы следующим образом и создать строку:

#include "mcc_generated_files/mcc.h"
#include "string.h"

unsigned char InChar;
char Temp[5];
char Command[32];

void UART_Demo_Command_INT(void) 
{    
    if(eusartRxCount!=0) 
    {   
        InChar=EUSART_Read();  // read a byte for RX
        strcat(Command,InChar); //concat Command with InChar, result in Command
        printf = printf("Command String: %s \n", Command);
    }  

}

Я получаю ряд ошибок:

UART_Demo.c:115:24: warning: incompatible integer to pointer conversion passing 'unsigned char' to parameter of type 'const char *' [-Wint-conversion]
        strcat(Command,InChar); //concat Command with InChar, result in Command
                       ^~~~~~
C:\Program Files (x86)\Microchip\xc8\v2.10\pic\include\c99\string.h:36:55: note: passing argument to parameter here
char *strcat (char *__restrict, const char *__restrict);
                                                      ^
UART_Demo.c:116:16: error: non-object type 'int (const char *restrict, ...)' is not assignable
        printf = printf("Command String: %s \n", Command);
        ~~~~~~ ^
1 warning and 1 error generated.

Потратив несколько часов, пытаясь это исправить и ни к чему не привел, я надеюсь некоторые из вас могут помочь.

1 Ответ

0 голосов
/ 02 апреля 2020

Если кто-то заинтересовался, проблема заключалась в том, что мои полученные символы были просто ... символами, а не строкой, в которой обычно был бы символ завершения \ 0 в конце, поэтому функция strcat (Concatinate strings) не работала.

В качестве исправления я просто добавил \ 0 в конец InChar, после чего сработал strcat.

...