单片机关于关于图像传输问题

关于单片机关于关于图像传输的几个问题。虽然是单片机,但是也希望能给在使用4412开发板的朋友们一些思路。

问题1:正在尝试用STM32控制GPRS发送数据到互联网。
 
目前已经可以发送简单数据,并在服务器接收。由于GPRS模块每次最多发送1K的内容,所以,在发送静态图像时遇到问题。使用透传的话,如何将一个5K左右的图像发送出去呢?现在手头有一个小于5K图像做测试,为16进制的数组。
 
主函数中有:send_gprs_data(pic[4051],1);
 
调用函数
void send_grps_data(char * bufp, unsigned int count){}
pic[4051]就是图片数组,16进制。
定义是u8 pic[]={}
 
编译时报错:
main.c(106): error:  #167: argument of type "u8" is incompatible with parameter of type "char *"
 
原因:
send_gprs_data((char*)pic,1);
1参数类型不对,需要强制转换
2参数是个数组的话后面不能带[4051]
 
问题2:单步调试,一次可以发送数组中一个字节。
 
我的困惑是,
1,原先的pic[]数组内装的16进制数据,每次发送的是AE,73这样的数据,我在接收 端是否还要进行转换?
2,在发送控制部分,我用的是strlen(),但是有些人说要用sizeof(),这里,在强制转换(char*)pic后,是否 在末尾添加了"\0",用strlen()行吗?
3,我在查看pic.c文件时,发现里面有好多空格,有8058个16进制数据(自己数的),但是用 strlen()得出结果4516。
 
原因:
每次发送的是AE,73这样的数据,在接收端不需要进行转换,进制不是问题。
 
不能在末尾添加了"\0"。
strlen原理是查找结束符来判断长度的,你需要发送的是"数据"不是字符串,
所以需要用sizeof强制转换不会改变"数值"仅仅改变类型,
所以不会末尾给你添加"\0"
永不止步步 发表于11-10 14:49 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345327个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号