我想用ATK-RM04上传一幅照片:却在tcp服务器的接收结果中发现照片数据中所有的字节0x00都丢失了,其他字节数据却没有问题。
以下是数据上传的代码:
[mw_shl_code=c,true]u8 my_wifi_read(u32 len)
{
u16 i,t;
u8 res=0;
u16 tlen=0;
u8 http[]="POST /stm/receive.php?userid=testid HTTP/1.1\r\nHost: 202.116.25.9:1180\r\nContent-Length: 100\r\n\r\n";
u2_printf("%s",http);
printf("%s",http);
// u2_printf("%s","12345"); //http数据测试使用
// printf("%s","12345"); //http数据测试使用
for(i=0;i<len/512;i++)
{
res=f_read(ftemp,fatbuf,512,&br); //读取已经打开的图片文件
if(res)
{
u2_printf("Read Error:%d\r\n",res);
break;
}else
{
tlen+=br;
for(t=0;t<br;t++)
{
u2_printf("%c",fatbuf[t]); //将读出的图片数据通过串口2发送给ATK-Rm04模块,此时ATK-rm04已配置成tcp客户端,进入透传模式
printf("%c",fatbuf[t]); //将读出的图片数据通过串口1发送给电脑,用作数据对比。
}
}
}
if(len%512)
{
res=f_read(ftemp,fatbuf,len%512,&br);
if(res) //读数据出错了
{
u2_printf("\r\nRead Error:%d\r\n",res);
}else
{
tlen+=br;
for(t=0;t<br;t++)
{
u2_printf("%c",fatbuf[t]); //将图片数据发送给ATK-rm04模块
printf("%c",fatbuf[t]); //将图片数据发送给电脑。
}
}
}
return res;
}[/mw_shl_code]
以下是电脑上收到的图片数据,用16进制字节表示:
42 4D 42 58 02 00 00 00 00 00 42 00 00 00 28 00 00 00 F0 00 00 00 40 01 00 00 01 00 10 00 03 00 00 00 00 58 02 00 00 00 00 00 00 00 00 00
以下是TCP服务器收到的数据,用16进制字节表示:
42 4D 42 58 02 42 28 F0 40 01 01 10 03 58 02
通过对比可以发现,ATK-rm04模块上传的数据中所有的0x00字节都被自动去除了。哪位大神帮帮忙,懂的话解释下:
|