27,373
社区成员
发帖
与我相关
我的任务
分享
void send_gprs_data(char * buf)
{
unsigned int i,j,k,m,s;
i=0;
k=strlen((const char *)buf);
s=k/BUFLENP;
m=k%BUFLENP; //BUFLENP=1024
send_string_uart3(TM_TYPE_TPSMODE); // "AT%TPS=2,1,3000,1024\x00D\x00A"
if(i<(s*BUFLENP))
{
for ( j = 0 ; j <1024 ; j ++)
{
bufp[j]=buf[i];
i++;
send_data_uart3(bufp[j]);
}
delay_GSM(5000);
}
else
{
for(j=0;j<m;j++)
{
bufp[j]=buf[i];
i++;
send_data_uart3(bufp[j]);
}
}
delay_GSM(5000);
}
请教版主,上面是我写的分包发送图片数组的代码。单步调试,一次可以发送数组中一个字节。我的困惑是,1,原先的pic[]数组内装的16进制数据,每次发送的是AE,73这样的数据,我在接收端是否还要进行转换?2,在发送控制部分,我用的是strlen(),但是有些人说要用sizeof(),这里,在强制转换(char*)pic后,是否在末尾添加了"\0",用strlen()行吗?3,我在查看pic.c文件时(如下截图),发现里面有好多空格,有8058个16进制数据(自己数的),但是用strlen()得出结果4516。
还请版主赐教~