FT_Read функция Buffer

Я пытаюсь использовать библиотеку DX22 и FTDI USB-UART для взаимодействия с чипом NXP. У меня проблемы с созданием буфера в C, который захватывает все доступные данные, добавляет их в строку, а затем продолжает программу. Все данные, поступающие с чипа NXP, должны заканчиваться на "CR LF". Должен ли я создать функцию для поиска входящих данных и построения строки, оканчивающейся на "CR LF"?

while (FT_Read != FT_OK)
    {
    if (RxBytes > 0) {
        FT_status = FT_Read(handle, RxBuffer, RxBytes, &BytesReceived);
        if (FT_status == FT_OK) {
            printf("RX: %s\n", RxBuffer);
        }
        else {
            printf("RX buffer empty.\n");
        }

    }
    else {
        break;
    }

1 ответ

В общем, да, но CR и LF могут поступать в виде отдельных вызовов Read, поэтому вы должны это учитывать. Нередко используется побайтный конечный автомат для обработки протоколов по потоковым каналам lile serial/TCP.

Замечания:

printf ("RX:% s \ n", RxBuffer);

предполагает, что буфер содержит строку с нулевым символом в конце. В целом это маловероятно, поэтому используйте BytesReceived в качестве индекса для вставки нулевого значения в конец данных и убедитесь, что в буфере всегда достаточно места для него.

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