【发布时间】:2019-01-28 14:35:30
【问题描述】:
我想在linux上为串口设置中断,所以我通过信号来做。信号处理程序有措辞,但我不知道如何获取字符数。具体我不确定第三个系统调用处理程序时 read() 函数中的参数。所以,我需要一个知道串行数据量的解决方案。
谢谢大家。
PS:我的英文不好,所以上面可能表达的不是很清楚
void serialHandler(int sig)
{
read(fd,buffer,I don't know);
}
【问题讨论】:
-
第三个参数取决于你期望的数据量和你传递给
read()的缓冲区大小(取其少) -
听起来你需要
aio_read,它使用缓冲区和指定的大小限制设置读取,并在读取完成时向您发送信号。一旦出现,aio_return会告诉您实际传输了多少字节。 -
或者将文件描述符设置为非阻塞。然后 read 将返回,但有多少字符存在。
标签: c linux unix serial-port posix