2017-02-13 47 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++規範