2017-02-13 8 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# 

Я хочу использовать ДАННЫЕ между двумя «#» symbols.For пример; - TPS мое имя метода Я хочу использовать эти данные, как этот

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

А также 47 мое значение сопротивления. Я буду использовать это значение в некоторых вычислениях. Но это не целое число.

Как я могу сравнить свои данные в If Statement?

Как я могу преобразовать свои данные из строки в 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 для междунар, atof для поплавка. Для получения дополнительных вопросов по этим работам просто отправьте их и найдите их определения в спецификациях c/C++

Смежные вопросы