2017-02-13 51 views
-1

我使用这些命令采取从串口字符串数据:如何使用数组的元素?

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# 

我想使用之间的两个“#” DATAS symbols.For例子; - TPS是我的方法的名字,我想用这个数据是这样

if(method=='TPS'){ 
    dosomething(); 
} 

而且还47是我的电阻值。我会在一些计算中使用这个值。但它是字符串不是整数。

如何比较If语句中的数据?

我怎样才能改变从我的字符串数据ingeter?

+1

其定义阅读的章节处理在你的C教科书字符串,你需要分析你的字符串。你有什么尝试? –

+0

我尝试了解可以使用哪种方法。我是否需要为我的第一个问题解析我的字符串还是仅仅是第二个问题? – king

+1

您需要将字符串解析为需要分析的“令牌”。其中一个“令牌”可以是以字符串表示的十进制值 - 您想要以整数格式(例如使用atoi())转换该令牌,然后分析/执行该令牌。 – linuxfan

回答

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对于int,ATOF浮法。 有关这些工作更多的问题,只是谷歌并找到在C/C++规范