我使用以下命令从串口获取字符串数据:
int k;
for(k=0;k<100;k++){
buf[0]=0;
HAL_UART_Receive(&huart2,buf,1, 100);
aRxBuffer[k]=buf[0];
}
HAL_UART_Transmit(&huart2,aRxBuffer, 100, 100);
这里正在阅读消息:
#TPS#TP10#47#100#1.02#3.3#1.04#
我想在两个&#34;#&#34;之间使用数据。符号。例如; - TPS是我的方法名称,我希望像这样使用这个数据
if(method=='TPS'){
dosomething();
}
47也是我的抵抗价值。我会在一些计算中使用这个值。但它是字符串而不是整数。
如何在If Statement中比较我的数据?
如何将数据从字符串转换为ingeter?
答案 0 :(得分:1)
如果#是你的deliminator,你可以解析这样的标记:
char str[80] = "#TPS#TP10#47#100#1.02#3.3#1.04#";
const char s[2] = "#";
char *token;
/* get the first token */
token = strtok(str, s);
/* walk through other tokens */
while( token != NULL )
{
printf( " %s\n", token );
token = strtok(NULL, s);
}
要将字符串转换为数字,请使用atoi for int,atof for float。 有关这些工作的更多问题,只需谷歌搜索并在c / c ++规范中找到它们的定义