我正在尝试使用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;
}发布于 2014-12-14 17:41:16
一般来说,可以,但CR和LF可能会在不同的Read调用中到达,因此您必须考虑到这一点。使用逐字节状态机来处理流链路lile serial/TCP上协议并不少见。
注意:
printf("RX:%s\n",RxBuffer);
假定缓冲区包含的内容是以null结尾的字符串。这通常是不太可能的,所以使用'BytesReceived‘作为索引,在数据的末尾插入一个null,并确保缓冲区始终包含足够的空间。
https://stackoverflow.com/questions/27464583
复制相似问题