免费注册 查看新帖 |

Chinaunix

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

[C] linux下c读取图片问题请帮帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-30 08:55 |只看该作者 |倒序浏览
在linux下把一副图片数据读到内存中,分段发送,请问一下,linux系统每发送一段ascii数据,会自动加入空格或者回车么?还是说每隔多少个字节
加入回车或者空格,现在我发送的图片数据在另一台机器上接收的时候16进制数据总是有回车或者空格的出现,并且出现的地方并没有规律。
    是否是串口初始化部分有地方能控制是否输出加上附加位呢?
    请各位老师指点一下~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

论坛徽章:
0
2 [报告]
发表于 2008-08-30 09:27 |只看该作者
按你的描述似乎你是用ftp在发
你调用了一些ftp的动态库?
请用二进制发送

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
3 [报告]
发表于 2008-08-30 09:59 |只看该作者

回复 #1 chinaren_xf 的帖子

使用fopen打开文件时,增加修饰符b,表示按二进制方式打开文件,例如:
fp = fopen(filename, "rb");

论坛徽章:
0
4 [报告]
发表于 2008-08-30 13:24 |只看该作者
谢谢楼上的两位的恢复,我现在把我的源码贴出来,我用的是16进制发送的

img_fd = open("/root/Documents/002.jpg",O_RDWR);
   if(img_fd < 0)
   { perror("open the image";
    exit(1);
   }
img_addr = mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,img_fd,0);
   fstat(img_fd,&sb);
len=write(img_addr );

论坛徽章:
0
5 [报告]
发表于 2008-08-30 13:27 |只看该作者
由于我用到了那个函数所以只能用open打开,发送数据已经可以了,图片很模糊,只能看到原图的框架,好像是16进制数错位,我现在不能确定,请问一下楼上的两位大大,造成这种情况的原因可能是什么呢?请给个思路,我可以自己调试。
  发送图片的前提是我用这个程序发送40个字符串的数组已经成功的显示了.

论坛徽章:
0
6 [报告]
发表于 2008-08-30 14:26 |只看该作者
哦,你用串口发的,要考虑一下串口的参数设置

论坛徽章:
0
7 [报告]
发表于 2008-08-30 15:34 |只看该作者
谢谢gawk的提示,串口设置上我也考虑过,我设置了串口初始化的发送方式是以原始的数据流发送,但是还是不行,依然会有些标志符号多余,您还能给点提示么?在接收的过程中可以把多余的符号去掉么?可以采用什么方法呢?还是在发送的时候
加入什么设置?

论坛徽章:
0
8 [报告]
发表于 2008-08-30 16:14 |只看该作者
http://blog.vckbase.com/hxy/archive/2007/02/10/24532.aspx
看看这里

  1. 网上许多流行的linux串口编程的版本中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没什么问题,但传送二进制数据时遇到0x0d,0x11和0x13却会被丢掉。不用说也知道,这几个肯定是特殊字符,被用作特殊控制了。关掉ICRNL和IXON选项即可解决。



  2.        c_iflag &= ~(ICRNL | IXON);



  3. 0x0d 回车符CR

  4. 0x11 ^Q VSTART字符

  5. 0x13 ^S VSTOP字符

  6. ICRNL 将输入的CR转换为NL  

  7. IXON 使起动/停止输出控制流起作用  

复制代码

论坛徽章:
0
9 [报告]
发表于 2008-08-30 16:36 |只看该作者
谢谢楼上的恢复,学习了您说的资料,发现我的接收图片信息中的16进制数不是0x0d,0x11和0x13会被丢掉。而是多了回车或者空格这样的数据,导致图片失真,收到的图片比发送的图片多了10几个字节

论坛徽章:
0
10 [报告]
发表于 2008-09-01 08:47 |只看该作者
谢谢楼上的恢复,学习了您说的资料,发现我的接收图片信息中的16进制数并不是像您说的0x0d,0x11和0x13会被丢掉。而是多了回车或者空格这样的数据,导致图片失真,收到的图片比发送的图片多了10几个字节,改变传送的大小还有串口的输出方式都是一个结果,请大大在给点提示啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP