无法从串口读取超过8个字节

时间:2014-02-27 10:23:05

标签: c linux serial-port byte

我在Linux下使用c编程语言,尝试使用串口创建通信应用程序。该程序将数据发送到串行端口并从微控制器读取接收的数据。接收的数据可以达到10到64之间的任意数量的字节,但不多也不少。我使用以下代码来读写数据:

unsigned char send_bytes[] = { 0x1, 0x6, 0x2, 0xAA, 0x2, 0x3, 0xB8, 0x4 };

int w = write(fd, send_bytes, sizeof(send_bytes)); // send

char buffer[64];

int r = read(fd, buffer, sizeof(buffer)); //read data

我的问题是r永远不会超过8个字节的数据。有谁知道为什么会这样?

提前致谢。

1 个答案:

答案 0 :(得分:1)

也许您的操作系统只提供8个字节的串口缓冲,因此它“倾向于”以8个字节的块提供传入数据。

只要有可用数据,就重复读取。您可以在可用的系统上使用select()

另外,由于另一端是一个微控制器,可能比你的工作站慢很多,所以当你执行read()时,数据可能还没有。当然,这是再次尝试的另一个原因。