Помогите пожалуйста разобраться с Serial в Ардуино
Получаю в Serial1 данные от преобразователя частоты используя TTL-RS485, в порт поступают данные, вывожу в монитор порта
Например в монитор порта вывелось: 162000542913203F845
Это данные стандарта Modbus-RTU, единственное что Serial1.read() вычитывает и отправляемые данные, приведу ниже как идет отправка и прием:
1620005429 - Это то что отправил контроллер
13203F845 - Это то что получил контроллер от частотника
Приведя к стандарту Modbus-RTU получим
{ 0х01, 0х06, 0х20, 0х00, 0х00, 0х05, 0х42, 0х90 } и { 0х01, 0х03, 0х20, 0х00, 0х00, 0х03, 0хF8, 0х45 } соответственно.
Так вот мне нужно то, что Serial1.read() вычитывает побайтно например 162000542913203F845 получить только ответ, а из самого ответа требуются только два предпоследних байта { 0х01, 0х03, 0х20, 0х00, 0х00, 0х03, 0хF8, 0х45 }
Перерыл гугл ничего не понял
Все еще усугубляется тем, что ответ может быть другой длины, например 16100271097361321388B512 и тупой парсинг уже не проканает, ибо если искомые байты в этом ответе это 16100271097361321388B512, то в этом 162000542913203F845
Есть определенное постоянство конечно в виде того, что значение ответа расположено всегда перед двумя байтами последними, последние два байта это контрольная сумма,
Получаю в Serial1 данные от преобразователя частоты используя TTL-RS485, в порт поступают данные, вывожу в монитор порта
C++:
while(Serial1.available()){
Serial.println(Serial1.read(), HEX);
}
Это данные стандарта Modbus-RTU, единственное что Serial1.read() вычитывает и отправляемые данные, приведу ниже как идет отправка и прием:
1620005429 - Это то что отправил контроллер
13203F845 - Это то что получил контроллер от частотника
Приведя к стандарту Modbus-RTU получим
{ 0х01, 0х06, 0х20, 0х00, 0х00, 0х05, 0х42, 0х90 } и { 0х01, 0х03, 0х20, 0х00, 0х00, 0х03, 0хF8, 0х45 } соответственно.
Так вот мне нужно то, что Serial1.read() вычитывает побайтно например 162000542913203F845 получить только ответ, а из самого ответа требуются только два предпоследних байта { 0х01, 0х03, 0х20, 0х00, 0х00, 0х03, 0хF8, 0х45 }
Перерыл гугл ничего не понял
Все еще усугубляется тем, что ответ может быть другой длины, например 16100271097361321388B512 и тупой парсинг уже не проканает, ибо если искомые байты в этом ответе это 16100271097361321388B512, то в этом 162000542913203F845
Есть определенное постоянство конечно в виде того, что значение ответа расположено всегда перед двумя байтами последними, последние два байта это контрольная сумма,