реклама на сайте
подробности

 
 
> Работа со строкой., STM32F103
Jenya7
сообщение Nov 18 2013, 07:47
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я принимаю строку с терминала. Знак принятия строки - возврат каретки (клавиша ENTER), который я отбрасываю.
CODE
void ParseString(char *str)
{
//split command and argument from string - space separated
char *command;
char *argument;
command = strtok(str," ");
argument = strtok(NULL," ");
UsartSendInt(strlen(argument)); // for debug
if(strcmp(command,"test")==0)
{
if(strlen(argument) == 0)
{
UsartSendString("No argument\r");
}
else
{
UsartSendString("There is an argument\r");
}
}
}

Если я ввожу, скажем, ”test 100 ” все работает как надо - я вижу ответ - There is an argument.
Если я ввожу только ”test” - я попадаю туда же.
Чтобы понять, где проблема я вывожу длину аргумента на терминал.
Получается что даже если аргумент пустой длина аргумента - 2.
Код
2
There is an argument.

В чем проблема? В AVR все работало как надо.
Еще добавлю - я работаю в IAR.

Сообщение отредактировал Jenya7 - Nov 18 2013, 07:49
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Nov 18 2013, 11:13
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Да - argument == NULL решает проблему. Я думаю что проблема в - char *argument. Динамическая алокация это всегда гемморой.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 18 2013, 11:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Jenya7 @ Nov 18 2013, 14:13) *
Я думаю что проблема в - char *argument. Динамическая алокация это всегда гемморой.

Нет. Проблема в том, что вы не понимаете, что принимает ваш МК и откуда это берется. Все остальные проблемы глубоко вторичны ...
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 18 2013, 11:26
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(kovigor @ Nov 18 2013, 16:19) *
Нет. Проблема в том, что вы не понимаете, что принимает ваш МК и откуда это берется. Все остальные проблемы глубоко вторичны ...

Я работаю с этим терминалом давно. На AVR никаких проблем не возникало - что ввел то он послал.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 18 2013, 11:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Jenya7 @ Nov 18 2013, 14:26) *
Я работаю с этим терминалом давно. На AVR никаких проблем не возникало - что ввел то он послал.

AVR - не показатель. Еще раз. Здесь добавляется приемник на другом МК. Если, например, на портах машины и МК не совпадают скорости, будет приниматься мусор. Вы можете оставить все, как есть, и в причинах проблемы не разбираться. Это ваше дело. Но разумнее было бы ее все же изучить ...
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Nov 18 2013, 12:01
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(kovigor @ Nov 18 2013, 16:37) *
AVR - не показатель. Еще раз. Здесь добавляется приемник на другом МК. Если, например, на портах машины и МК не совпадают скорости, будет приниматься мусор. Вы можете оставить все, как есть, и в причинах проблемы не разбираться. Это ваше дело. Но разумнее было бы ее все же изучить ...

Попробую поставить еще один МК. Хотелось бы докопаться до корня проблемы.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016