Почему не правильно работает функция сравнения strcmp
- Войдите на сайт для отправки комментариев
Сб, 07/10/2017 - 12:16
Здравствуйте. Скажите почему у меня функция сравнения сравнивает не слово а целиком а как то коряво. ощущение такое что по буквам . от проги передаю например слово 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);
}
}
Патамуш, из сериала еще /n прилетает до кучи, а в особо тяжелых случаях и /r.
Выведи в сериал strlen(str)
Юзать strstr, и не морочить людям голову лишними символами, которые ты выхватываешь из Serial (это и \r, и \n).
Все заработало ,спасибо всем огромное за помощь .
случайно ткнул :(