免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3214 | 回复: 9

读取串口数据有哪些方法? [复制链接]

论坛徽章:
0
发表于 2009-11-16 21:43 |显示全部楼层
开发一个GSM短信平台。
GSM用串口和ARM通信。需要从串口读取GSM发送来的信息。
读取串口最优化最好的方式是那种?
用while()循环一次读一个字符,可不可以?
还有没有其他的方式?
谢谢

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2009-11-17 09:43 |显示全部楼层

  1. if (select(1+fd,&rfds,NULL,NULL,&tv)>0)
  2.         {
  3.                 if(FD_ISSET(fd,&rfds))
  4.                 {       
  5.                         sleep(1);
  6.                         usleep(wait_us);
  7.                         nread=read(fd, buff, 1024);
  8.                         if(nread<0)
  9.                         {       
  10.                                 printf("serial read error!\n");
  11.                                 return -1;
  12.                         }
  13.                         memcpy(recv_buf,buff,nread);
  14.                 }
  15.         }
复制代码

论坛徽章:
0
发表于 2009-11-17 10:14 |显示全部楼层
用中断,将GSM模块接在中断引脚上,有数据时会触发中断,然后在使用tasklet,起用下半部机制,在下半部中读取数据。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2009-11-17 13:03 |显示全部楼层
不用那么麻烦吧?
一个纯串口操作

论坛徽章:
0
发表于 2009-11-17 13:15 |显示全部楼层

回复 #2 T-Bagwell 的帖子

感谢版主。
我去试试。

论坛徽章:
0
发表于 2009-11-17 13:31 |显示全部楼层
原帖由 T-Bagwell 于 2009-11-17 09:43 发表

if (select(1+fd,&rfds,NULL,NULL,&tv)>0)
        {
                if(FD_ISSET(fd,&rfds))
                {       
                        sleep(1);
                        usleep(wait_us);
                        nread=read(fd, buff, 1024);
                        if(nread



版主。我想请问下,您这里的  sleep()是为了延迟,等待数据的到来,是吗?sleep()和usleep()结合起来用有什么特殊的好处么?
usleep应该是毫秒级别的。
谢谢额

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2009-11-17 14:43 |显示全部楼层
是的
你理解的很正确

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2009-11-17 14:44 |显示全部楼层
有的时候咱们发送的数据时很快的,但是串口收数据可不是非常的快,所以,我们可以等待一下

论坛徽章:
0
发表于 2009-11-17 17:00 |显示全部楼层

回复 #8 T-Bagwell 的帖子

.。谢谢斑竹。。
串口通了。已经。呵呵。感谢

现在就是开始写7-bit和8-bit编码了。手机不支持8-bit的信息。只有用短信猫了。
不知道8-bit能不能发送中文呢。
继续努力ing

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2009-11-18 09:36 |显示全部楼层
短信猫一般分三种模式
text,PDU,block
你用PDU的话是可以发送中文的
查查猫对应的at指令吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP