Сравнение данных

Timon816
Offline
Зарегистрирован: 12.08.2020

Всем привет! Никак не могу разобрать как сравнить имеющиеся данные с теми, которые пришли в порт. Если взять допустим число "247", вопросов нет, а если целую строку "< d 178 110 0B0001121228295768603A27" то вообще нет никаких соображений как такое реализовать.... Помоги пожалуйста разобраться...

sadman41
Offline
Зарегистрирован: 19.10.2016
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Timon816 пишет:
...вообще нет никаких соображений как такое реализовать.... Помоги пожалуйста разобраться...

Для начала попытайтесь сформулировать, что Вы подразумеваете под сравнением.

Для начала - что должно являться результатом сравнения?

b707
Offline
Зарегистрирован: 26.05.2017

Timon816, прежде чем сравнивать строку - ее в любом случае нужно правильно прочитать, а именно с этим у вас проблемы. судя по обсуждению на Амперке

Timon816
Offline
Зарегистрирован: 12.08.2020

Имеется 2 шт. Arduino(Nano1 и Nano2). Nano1 (правильно) считывает коды с шины авто в виде строки(пример строки:<240 1FF  0B4331F10134FFFFFFFF0080) далее, эти строки Nano2 считывает из Nano1 через Serial.

С авто иногда считывается до 5 строк в секунду. Получается, обрабатывать нужно с большой скоростью и не пропустить следующих строк.

Задача: Nano 2 принимает  строку "<240 1FF 0B4331F10134FFFFFFFF0080" из Nano1 через Serial, сравнивает с уже записанной в скетче строкой константой  "<240 1FF 0B4331F10134FFFFFFFF0080", и так как строки идентичны, допустим, зажигает светодиод подключенный к пину 5.

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну, сравнение на равенство - это самый простой (и экономичный) вариант.

Timon816
Offline
Зарегистрирован: 12.08.2020

Мне бы какой-нибудь пример увидеть... Если можно...

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно. Не скрываем. Не запрещаем. Смотрите на здоровье, пока Роскомнадзор не ограничил на законных основаниях.

Timon816
Offline
Зарегистрирован: 12.08.2020

Интересно, это тупой ответ умного человека, или насколько возможно умный ответ тупого.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020
if (a == b)

Чего сложного-то?

Timon816
Offline
Зарегистрирован: 12.08.2020

Для Вас ничего сложного, а для новичка сложно. И раздел форума ведь для новичков.

Timon816
Offline
Зарегистрирован: 12.08.2020
String inputString = "";
boolean stringComplete = false;

void setup() {
Serial.begin(250000);
String inputString = "";
}

void loop() {
while (Serial.available()) {
  char inChar = (char)Serial.read();
  stringComplete = true;
  inputString += inChar;
  delay(1);
}
if (stringComplete==true){
  Serial.println(inputString);
if(inputString == "< b 240 1FF 0B4331F10134FFFFFFFF0080\r\n"){
  Serial.println("OK");
}
  inputString="";
}
  stringComplete = false;
}

 

Timon816
Offline
Зарегистрирован: 12.08.2020

Написал вот такой скетч. Когда строки приходят с небольшим разрывом по времени, то все ок. А когда за секунду приходит до 5 строк, то просто не успевает обрабатывать. 

rkit
Offline
Зарегистрирован: 23.11.2016

Успевает замечательно. У тебя просто разделение строк происходит по интервалу времени. И если нет интервала, то нет и разделения. Надо менять.

Timon816
Offline
Зарегистрирован: 12.08.2020

Тогда прошу объяснить как это сделать

nik182
Offline
Зарегистрирован: 04.05.2015

Собирай приходящие символы в строку и ищи в потоке символов /r/n, как нашёл, считай что всё что было до - одна строка для обработки. Отдавай её на сравнение, а приходящие символы собирай в другую строку опять до этих символов. Сравнение будет быстрее чем набор строки, поэтому имея две строки попеременно можно полностью выполнить задуманую задачу.

Timon816
Offline
Зарегистрирован: 12.08.2020

nik182 пишет:
Собирай приходящие символы в строку и ищи в потоке символов /r/n, как нашёл, считай что всё что было до - одна строка для обработки. Отдавай её на сравнение, а приходящие символы собирай в другую строку опять до этих символов. Сравнение будет быстрее чем набор строки, поэтому имея две строки попеременно можно полностью выполнить задуманую задачу.

Спасибо вам огромное, доберусь до компьютера и обязательно попробую.