有关linux下串口通讯断帧的问题,望高手解答

andy1658 2011-09-07 03:11:25
小弟现在做一个项目需要用串口通讯,操作系统是linux2.6的内核,平台是arm pxa166的平台,读串口的代码如下:
struct timeval timeout1={0,3}; //select等待3毫秒,3毫秒轮询,要非阻塞就置0 
FD_ZERO(&rd);
FD_SET(fd_global, &rd);
if(FD_ISSET(fd_global, &rd))
{
if(select(fd_global+1, &rd, NULL, NULL, &timeout1) < 0)
{
perror("select error\n");
}
else
{
while((nRead = ev_read(fd_global,recv_buf,READ_SIZE)) > 0)
{
COUNTER_IN = nRead;
printf("nRead = %d\n", nRead);
int recv_index, index = 0;
for(recv_index=0;recv_index<nRead;recv_index++,index++)//存储每次从缓冲区读取得数据
{
DATA_IN[index]=recv_buf[recv_index];
//printf("m@DATA_IN[%d]=%x\n",index,DATA_IN[index]);
}
}
}
}

现在碰到一个问题,跟我通讯的单片机串口发送报文的速率在3-5ms之间,导致我的软件中一次能收到几个报文,现在希望一次只收一个报文,倒腾了几天无果,望各位高手解答,不胜感激~
...全文
28 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
thenshesaid 2011-09-07
  • 打赏
  • 举报
回复
READ_SIZE是多少
希望每次收到一个报文的话,每次少读一些不就好了。

如果每次只读一个会导致RX溢出的话,考虑使用FLOW CONTROL

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧