Сравнение данных
- Войдите на сайт для отправки комментариев
Пнд, 14/06/2021 - 22:42
Всем привет! Никак не могу разобрать как сравнить имеющиеся данные с теми, которые пришли в порт. Если взять допустим число "247", вопросов нет, а если целую строку "< d 178 110 0B0001121228295768603A27" то вообще нет никаких соображений как такое реализовать.... Помоги пожалуйста разобраться...
https://www.cplusplus.com/reference/cstring/strcmp/
Для начала попытайтесь сформулировать, что Вы подразумеваете под сравнением.
Для начала - что должно являться результатом сравнения?
Timon816, прежде чем сравнивать строку - ее в любом случае нужно правильно прочитать, а именно с этим у вас проблемы. судя по обсуждению на Амперке
Имеется 2 шт. Arduino(Nano1 и Nano2). Nano1 (правильно) считывает коды с шины авто в виде строки(пример строки:<240 1FF 0B4331F10134FFFFFFFF0080) далее, эти строки Nano2 считывает из Nano1 через Serial.
С авто иногда считывается до 5 строк в секунду. Получается, обрабатывать нужно с большой скоростью и не пропустить следующих строк.
Задача: Nano 2 принимает строку "<240 1FF 0B4331F10134FFFFFFFF0080" из Nano1 через Serial, сравнивает с уже записанной в скетче строкой константой "<240 1FF 0B4331F10134FFFFFFFF0080", и так как строки идентичны, допустим, зажигает светодиод подключенный к пину 5.
Ну, сравнение на равенство - это самый простой (и экономичный) вариант.
Мне бы какой-нибудь пример увидеть... Если можно...
Можно. Не скрываем. Не запрещаем. Смотрите на здоровье, пока Роскомнадзор не ограничил на законных основаниях.
Интересно, это тупой ответ умного человека, или насколько возможно умный ответ тупого.
Чего сложного-то?
Для Вас ничего сложного, а для новичка сложно. И раздел форума ведь для новичков.
Написал вот такой скетч. Когда строки приходят с небольшим разрывом по времени, то все ок. А когда за секунду приходит до 5 строк, то просто не успевает обрабатывать.
Успевает замечательно. У тебя просто разделение строк происходит по интервалу времени. И если нет интервала, то нет и разделения. Надо менять.
Тогда прошу объяснить как это сделать
Собирай приходящие символы в строку и ищи в потоке символов /r/n, как нашёл, считай что всё что было до - одна строка для обработки. Отдавай её на сравнение, а приходящие символы собирай в другую строку опять до этих символов. Сравнение будет быстрее чем набор строки, поэтому имея две строки попеременно можно полностью выполнить задуманую задачу.
Спасибо вам огромное, доберусь до компьютера и обязательно попробую.