我正在为我的物联网模块使用pic32(C32编译器),32位体系结构,其中我正在从中接收数据 云,而不是提取到我的application.I正在使用此功能(这些是我可以提供的最大详细信息 提供)。成功提取前3个值,第3个值后我有一个DNS地址,例如 xyz.gcloudxyz.in,这是我在'。'处遇到strtok_r拆分字符串的问题。代替“,” 逗号。
这是我的src buff数据
866758041000000,2,DV1,xyz.gcloudxyz.in,1111,2222,3333,DV2,xyz.gcloudxyz.in,1234,1231,1212,
void SERVERGetConf(ubyte *src,DEVICE_CONF *dst)
{
unsigned char *src_ptr = src;
unsigned char *token = 0,*rest_ptr;
unsigned char matched_string[2] = ",";
unsigned char cCount,AvlbConf = dst->avilable_config;
token = (unsigned char *) strtok_r(src_ptr,",",&rest_ptr);
if(!memcmp(token,modem.imei,sizeof(token)))
{
token = strtok_r(NULL, matched_string,&rest_ptr);
dst->avilable_config = atoi(token);
for(cCount = 0;cCount < dst->avilable_config;cCount++)
{
DATA_SERVER_CONFIG t_conf = {0};
token = strtok_r(NULL, matched_string,&rest_ptr);
memcpy(t_conf.data.id, token,sizeof(token));
token = strtok_r(NULL, matched_string,&rest_ptr); //**At this line split at '.'**
memcpy(t_conf.data.domain, token,sizeof(token));
token = strtok_r(NULL, matched_string,&rest_ptr);
memcpy(t_conf.data.port[0], token,sizeof(token));
token = strtok_r(NULL, matched_string,&rest_ptr);
memcpy(t_conf.data.port[1], token,sizeof(token));
token = strtok_r(NULL, matched_string,&rest_ptr);
memcpy(t_conf.data.port[2], token,sizeof(token));
dst->device[cCount].data = t_conf.data;
}
modem.flag.sendingconfigration = 0;
conf.flags.bits.config_updated = 1;
}
}