我正在尝试通过多个函数(每个函数提取消息的一部分)解析一个 char* 并且在函数之间传递指针时遇到了麻烦。在我遇到问题的消息部分中,有一个整数后跟一个空格字符,然后是一个双精度数。
这一切都在STM32F4上运行:
主功能:
char* myMsg = NULL;
char* nLink = NULL;
SerialQueue_pop(&myMsg, &tablet_queue); //Extract a char* from a buffer
uint8_t id = extract_gset_id(myMsg, (char*)&nLink); //Extract the integer from the char*
real value = extract_gset_value((char*)&nLink); //Extract the real (float) from the char*
职能:
int8_t extract_gset_id(char* message, char* pEnd)
{
char** ptr;
if ((strlen(message)-13)>0){
int8_t val = (int8_t)( 0xFF & strtol(message+13, &ptr,10));
*pEnd = ptr;
return val;
}
return -1;
}
real extract_gset_value(char* message)
{
if ((strlen(message))>0){
char arr[8];
real val = strtod(message, NULL);
snprintf(arr, 8, "%2.4f", val);
return val;
}
return -1;
}
第一个函数调用应该从字符串的第 13 个字符开始提取一个整数。这很好用,如果我在 strtol 调用之后读取返回指针(nLink),它指向正确的位置(在整数后面的空格处)。但是,当我从主函数或第二个函数中的指针读取字符串时,它并没有指向正确的位置。
我要做的是让主函数将指针传递给由第一个函数更新的数组,然后第二个函数获取该指针并使用它。
任何帮助,将不胜感激。