linux下读写uart串口,Linux串口以异步模式读取

我在Linux系统中从串口读取数据时遇到了麻烦 . 我正在尝试使用UART将传感器连接到linux系统 . 我可以读写/开发/ ttyS1 . 但问题是我不想从UART轮询消息 . 相反,我想使用异步模式来获取数据 . 随着数据的到来,回调函数将进入某个例程并运行我的代码 . 问题不在于传感器向我发送不同的数据包,每个数据包包含各种字节的数据 . 他们每一秒都来!

例如:

Time Sensor MyLinux

1s 50bytes

124bytes

2s 40bytes

174bytes

3s 60bytes

244bytes

我的问题是如何使用异步串行编程,以便在回调函数中,这两个数据包可以作为两个消息读取

说50个字节来了,回调函数可以让我读取50个字节127个字节来,回调函数可以让我读取127个字节

现在,就像50个字节一样,我只能读取27个字节,其余23个字节在下一个消息中 .

我在POSIX中的串口设置是:

/* now we setup the values in port's termios */

serial->tio.c_cflag=baudrate|databits|checkparity|stopbits|CLOCAL|CREAD;

serial->tio.c_iflag=IGNPAR;

serial->tio.c_oflag=0;

serial->tio.c_lflag=0;

serial->tio.c_cc[VMIN]=28;

serial->tio.c_cc[VTIME]=6;

/* we flush the port */

tcflush(serial->fd,TCOFLUSH);

tcflush(serial->fd,TCIFLUSH);

/* we send new config to the port */

tcsetattr(serial->fd,TCSANOW,&(serial->tio));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值