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 в качестве индекса для вставки нулевого значения в конец данных и убедитесь, что в буфере всегда достаточно места для него.