Управление старым устройством по uart

Есть устройство, управляется по rs485, нужно отправлять комманды с ардуино.
К ардуино подключены 3 тактовые кнопки “пуск” “стоп” “сброс”
Есть протокол обмена данными, он в пдф но не разобрался как прикрепить файл.

Напиши и отправь htpicc@gmail.com.

Укажите назначение и модель устройства.
А пдф можно попробовать сконвертировать в текст или в графический файл ( обычно пункт меню “Импорт”). И уже изображение прикрепить к сообщению.

Устройство - газозаправочная колонка не для коммерческого использования.
У брата фермерское хозяйство чтобы заправлять свои машины.
Колонка досталась в комплекте с газовозом, других способов управления не нашёл.
Давай лучше на почту скину, там 13 страниц

Написал в личные сообщения на форуме

Высылайте пожалуйста информацию wizard-sen@yandex.ru

По работе запарка, мало времени, но я объясню, что тебе надо делать.

Собери сообщение для передачи нужной тебе команды из контроллера Ардуино.
Для этого используй функцию побайтной передачи: Serial.write(“значение байта для отправки”),
это позволит тебе передавать данные в бинарном виде.
Протокол UART, используемый в Ардуино по умолчанию уже настроен так, как тебе надо.

Смотри руководство, которое ты мне прислал и пиши нужную тебе команду, состоящую из набора строк. Их должно быть 24 шт. ( смотри таблицу 3.1 протокола, это сумма байтов колонки №2)

Serial.write(1); // маркер начала сообщения

Serial.write(0); // номер ТРК старший байт, номеров ТРК может быть аж 65535
Serial.write(1); // номер ТРК младший байт

Serial.write(35); //здесь для примера я написал команду ПУСК

Serial.write(2); // маркер начала поля данных

Serial.write(0); // 6 байт цены, я указал цену “0 коп”
Serial.write(0);
Serial.write(0);
Serial.write(0);
Serial.write(0);
Serial.write(0);

Serial.write(0); // 6 байт дозы налива, я указал дозу “0 мл”
Serial.write(0);
Serial.write(0);
Serial.write(0);
Serial.write(0);
Serial.write(0);

Serial.write(0); // код ошибки протокола старший байт (0-255), я написал нет ошибок
Serial.write(0); // код ошибки протокола младший байт (0-255)

Serial.write(0); // код состояния ТРК старший байт (0-255), см.руков. и выбирай нужный СТОП
Serial.write(0); // код состояния ТРК младший байт (0-255)

Serial.write(3); // маркер окончания поля данных

Serial.write(calculateChecksum(uint8_t* data, int length)) // контрольная сумма

Контрольная сумма считается с помощью функции:

uint8_t calculateChecksum(uint8_t* data, int length) {
uint8_t checksum = 0;
for (int i = 0; i < length; i++) {
checksum ^= data[i];
}
return checksum;
}
В твоем случае длина сообщения - length =23

Удачных экспериментов!