使用unistd.h中的read()缺少字符

时间:2011-02-21 19:52:31

标签: c++ linux serial-port std unistd.h

我们使用read()中的unistd.h方法从Linux环境中的串口接收数据。要专门从/dev/ttys1读取数据。

我们收到的部分数据包括字符0x0A(换行符)和0x0B(垂直制表符),但图书馆似乎忽略了它们。

我的意思是,我们使用unsigned char[]来存储从端口获取的数据,并且数组包含除这些字符之外的所有数据。

您认为这可能是错的?

2 个答案:

答案 0 :(得分:2)

的ttys?您确定将终端驱动程序置于正确的状态以传递这些字符吗? (参见tcgetattr和tcsetattr)。根据您的精确设置,您可以使用stty程序以交互方式使用这些设置。

答案 1 :(得分:0)

你怎么知道你应该读0x0A和0x0B?您是否正在使用任何机制来“调试”电线,以确定您应该阅读的消息是什么? read()函数不假设数据正在读取,因此如果丢失任何字节,则应该在程序的任何其他部分。

希望这对你有所帮助。 谢谢, 塞尔吉奥。