Почему не правильно работает функция сравнения 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).
Все заработало ,спасибо всем огромное за помощь .
случайно ткнул :(