免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2727 | 回复: 4
打印 上一主题 下一主题

linux下c编程串口问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-27 13:19 |只看该作者 |倒序浏览
还是个初学arm和linux的新人,现在有个问题弄了好久都没有解决的方法,请各位老师指点一下.
    我在arm板linux系统下做图片数据传输(网络上的源码我修改的),程序运行没有错误提示,现在我发送一副图片往串口,串口返回的字节数和我的图片的字节数相同,初始化串口的时候c_cc[vtime]等两个属性都设0,现在用两台电脑串口互连,但是接收的时候,超级终端从arm上接收的图片数据总是不完全,总是接收到6000~7000的字节数,换了好几种方法来发送图片,接收程序不变,还是不能收图片完全,我用的是mmap函数把图片映射到地址中,把这个地址放在write函数中写到串口,图片大小已经确定,希望能得到各位老师的指点,这个问题现在不知道怎么解决了,并且有时候连结尾标志都发不出来.
我这里谢谢了~各位老师
期待中~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一下是主函数源码,串口初始化程序是网络上的代码

  img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
  if(img_addr == MAP_FAILED)
  { perror("map the image";
    exit(1);
  }
                                                                                                                                        LastDataSize = sb.st_size % 506;
  if(LastDataSize == 0) Pkg_num = sb.st_size / 506 ;
  else  Pkg_num = sb.st_size / 506 + 1;
  DataSize = Pkg_num * 506;
  f(LastDataSize == 0)
  {
    for(i = 0; i < Pkg_num; i++)
    {
    memcpy(PKG.data,img_addr + img_index,506);
    len=write(fd,&KG,sizeof(_PKG));
    img_index += 506;
    }
  sleep(2);
  tcflush(fd,TCIOFLUSH);
  len=write(fd,"EEF",3);

我试过发送256 512 1024 4096 5000 6000字节数都不行~我试验每次发送一段字节数都初始化串口在发送,还是不行
write返回依然是我要发送的字节大小,接收还是不完全

论坛徽章:
0
2 [报告]
发表于 2008-08-28 20:50 |只看该作者
lz应该把代码用
  1. ...
复制代码
包起来,大家才容易看.

论坛徽章:
0
3 [报告]
发表于 2008-08-29 10:57 |只看该作者
已经解决了~谢谢大家

论坛徽章:
0
4 [报告]
发表于 2008-08-29 11:01 |只看该作者
怎么解决的?

论坛徽章:
0
5 [报告]
发表于 2008-09-01 11:23 |只看该作者
加上了传输延迟就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP