Почему не правильно работает функция сравнения strcmp

timur2008
Offline
Зарегистрирован: 06.03.2013

Здравствуйте. Скажите почему у меня функция сравнения сравнивает не слово а целиком а как то коряво. ощущение такое что по буквам . от проги передаю например слово ok , отправляю его обратно проге через Serial.println все норм. Но когда дальше я пытаюсь выполнить вот такую проверку

if (strcmp(str, "ok")==0)
		{
			one(0, 0);
		} 

в ардуиновском скрипте она не срабатывает. Получается какая то чушь. Я вывожу результат проге через Serial.println(strcmp(str, "ok")); и он в результате сравнения выводит

"-107-4"

в проге данные вывожу в текстбокс вот так

serialPort1.Write(textBox1.Text);
            c = serialPort1.ReadExisting();
            textBox2.Text = c;

Данные кстати вот так получаю от проги в ардуине

inSize = 0;
	memset(str, '\0', 128);
	if (Serial.available() > 0)
	{
		
		inSize = Serial.available();
	
		for (int i = 0; i < inSize; i++)
		{
			str[i] = Serial.read();
		}
		Serial.println(strcmp(str, "ok"));
		if (strcmp(str, "ok")==0)
		{
			one(0, 0);
		}
	}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Патамуш, из сериала еще /n прилетает до кучи, а в особо тяжелых случаях и /r.

Выведи в сериал strlen(str)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Юзать strstr, и не морочить людям голову лишними символами, которые ты выхватываешь из Serial (это и \r, и \n).

timur2008
Offline
Зарегистрирован: 06.03.2013

Все заработало ,спасибо всем огромное за помощь .

timur2008
Offline
Зарегистрирован: 06.03.2013

случайно ткнул :(