提取出如下字符串,应该用什么函数呢?HAL的库
1,串口发来的数据格式是
"命令名+空格+id1+空格+id2+空格+id3+空格+id4+空格+id5+空格+"string"\r"
例如如下的真实数据:
revdata 1 1 17 1 2 "hi"\r
2,请问我怎么把收到的数据用5个变量保存,比如我定义了变量如下:
uint8_t id1,id2,id3,id4,id5;
char *string;
最终我想要得到的结果是
id1=1
id2=1
id3=17
id4=1
id5=2
*string="string"
3,
有时候命令只带id1,id2
有时候命令只带id1,id2,id3
有时候命令只带id1,id2,id3,id4
有时候命令只带id1,id2,id3,id4,id5
也就是说,revdata后面跟的数据个数不一定。
请问我这个问题应该怎么解决呢?一筹莫展,谢谢大家了。
C函数:strtok,C 标准库 - <string.h>参考一下,这个基本可以满足要求,就是写起来稍微麻烦一些。
大概就是这个样子 单个 内容跟空格比较,得前后地址增量,按起始址及长度取 命令,ID,字符串即可。 在数据格式中加入数据长度就可以判定了 接收时计数,确定每帧长度,然后根据长度分配 lwg8458 发表于 2019-11-20 13:58
接收时计数,确定每帧长度,然后根据长度分配
不行的,只知道第几个空格后面是什么类型数据,数据长度是不一定的。那字符串来什么字符都可能,确定不了长度。 子曰好人 发表于 2019-11-20 09:10
在数据格式中加入数据长度就可以判定了
长度不可知。实时数据,长度是不定的。 stm1024 发表于 2019-11-19 23:13
C函数:strtok,C 标准库 - 参考一下,这个基本可以满足要求,就是写起来稍微麻烦一些。
...
好像很好。是我想要的。像python和java等里面都有个split函数,很简单就能拆分了字符串。感谢。 sos博 发表于 2019-11-21 12:11
长度不可知。实时数据,长度是不定的。
下位机发数据的时候包含数据长度不就知道了吗,协议自己定,如果你没办法改协议就当我没说
页:
[1]
2