您的位置:首页 > 大数据 > 人工智能

AIS中STM32程序,Sprintf函数,函数字符串形参

2017-02-10 16:14 381 查看
在一段字符串中间加上另外的字符串,并有相应的格式,组好的方法是使用sprintf格式化输出函数将其打印到另一个字符串中,最终的字符串就是自己想要的字符串。

sprintf函数的经典使用历程如下所示,该历程使用的是在进行AIS解析时使用的一段程序。工作日志2017-2-10

int prepareAisStr(int shipID, double LatGPS, double LonGPS, char* pAisStr)
{
int LatDegree, LonDegree;
double LatGpsAis, LonGpsAis;
char pStr[200];
int nCheckSum;

LatDegree = (int)LatGPS;
LonDegree = (int)LonGPS;
LatGpsAis = (LatGPS-LatDegree)/60.0 + LatDegree*100.0;
LonGpsAis = (LonGPS-LonDegree)/60.0 + LonDegree*100;

sprintf(pStr, "UNSR,07,%d,AA00,%4.7f,N,%5.7f,E,001,002,03,04", shipID, LatGpsAis, LonGpsAis);  //sprintf函数的使用方法
//源字符串为UNSR,07,999413001,,,N,,E,001,002,03,04不包括船舶号以及经纬度该sprintf函数的作用就是将相应的中间需要的数据加上转换为UNSR,07,999413001,AA1,3036.0000,N,11421.0000,E,001,002,03,04的形式。
nCheckSum = CalCrcCheck(pStr);   //CalCrcCheck函数的作用实行校验并返回校验的结果给nCheckSum,例句的校验结果为00   16进制

sprintf(pAisStr, "$%s*%2X", pStr, nCheckSum);   //最终的结果要形成$UNSR,07,999413001,AA1,3036.0000,N,11421.0000,E,001,002,03,04*00

return 0;
}

int CalCrcCheck(char str[])
{
int sum,len,i;
len=strlen(str);
sum=0;
for(i=0;i<=len-1;i++)
{
sum=sum^str[i];
}
//    printf("len=%d \n",len);
//    printf("sum=%d \n",sum);
//    printf("sum=%02X \n",sum);
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐