读取串口数据使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。
char buff[1024];
int Len;
int readByte = read(fd,buff,Len);
可以使用操作文件的函数来实现异步读取,如fcntl,或者select等来操作。
void SERIAL_RX(void)
{
//read(fd, RXBUF , RX_len);
#if 1
int ret,n,pos,retval;
fd_set rfds;
struct timeval tv ;
pos = 0;//指向接收缓冲
for(n = 0; n < RX_len; n++)
{
RXBUF[n] = 0xFF;
}
FD_ZERO(&rfds);//清空串口接收端口集
FD_SET(fd,&rfds);//设置串口接收端口集
tv.tv_sec = 2;
tv.tv_usec = 0;
while(FD_ISSET(fd,& rfds))//检测串口是否有读写动作
{
//每次循环都要清空,否则不会检测到有变化
FD_ZERO(&rfds);//清空串口接收端口集
FD_SET(fd,&rfds);//设置串口接收端口集
retval = select(fd+1,&rfds,NULL,NULL,&t