FT_Read函数Buffer

时间:2014-12-13 23:04:47

标签: c embedded ftdi

我试图使用DX22库和FTDI USB-UART与恩智浦芯片进行交互。我在使用C创建缓冲区时遇到问题,该缓冲区抓取所有可用数据,将其附加到字符串,然后继续执行该程序。来自恩智浦芯片的所有数据都应以" 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 个答案:

答案 0 :(得分:2)

一般情况下,是的,但CR和LF可能会在单独的读取调用中到达,因此您必须允许这样做。使用逐字节状态机来处理流链接lile serial / TCP上的协议并不罕见。

注意:

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

假设缓冲区包含的是以null结尾的字符串。这通常不太可能,因此使用'BytesReceived'作为索引在数据末尾插入null,并确保缓冲区始终包含足够的空间。