sim31r: Это, конечно, да, все круто, знаю, что такое Modbus RTU и его приколы. Но вы все-таки правы, я слегка запутался. В данном случае это не Modbus. В итоге: я запутался, вопрос закрыт, пока не распутаюсь. Спасибо.
Ocelot: "u8serno serial port used 0..3" - из документации. Всё подключение остается таким же. Ничего не менял, но Arduino Mega перестает слать что-либо. Rx более не моргает. Что это означает? Что Сериал вообще не завелся?
Т.е. когда в документации говорится что-то вроде "укажите сериал порт", имеется в виду не выберите произвольно, а именно укажите, с чем имеем дело? Но в Меге же 4 (0,1,...,3) Аппаратных UART-порта, разве нет?
так и пробую. В протоколе Modbus, при создании объекта master(0,1,10), вторая цифра - как раз выбор последовательной шины (0-3). При установке значения в master, отличного от 0, Mega перестает что-либо передавать.
Ocelot: а можете подсказать, как double значение передать от слейва? Присылается лишь целая часть. Или нужно дробную часть отсылать отдельным регистром?
Ocelot: спасибо, я не правильно понимал работу функции poll. Опять. На данном этапе всё получилось. Получил желаемое. Без вас не ушел бы дальше.. никуда не ушел бы, скажем так.
Ocelot: Немного переделал скетч, записываю в 4 регистр теперь значение заранее включенного диода, то бишь 1цу. Вывожу в мастере результат следующим образом:
case 2:
master.poll(); // check incoming messages
Serial.println("start");
for (uint16_t i = 0; i < telegram.u16CoilsNo; i++){
Serial.print(au16data[i]);
}
Serial.println("end");
Получаю сразу 9 start\end-ов, среди которых все нули, кроме последнего значения. При втором запросе, все 9 start\end-ов с 1цами. Почему 9 раз инициируется case:2?... И почему после первого запроса всего 1 единица?
Ocelot: во время проверки сигнала, которая, прошла успешно (везде, что надо), была найдена ошибка другого рода, но более обидная. За всё время исправления ошибок я так и не попробовал воткнуть Ардуинку поглубже в макетку, что в этот же момент исправило все проблемы и теперь Дуинки перебрасываются сообщениями.
Но теперь встала иная проблема. Как посмотреть то, что получилось? Верно ли я понимаю, что простого мониторинга порта с данным скетчем - не вариант? Нужно как-то иначе вывести всё это, а еще раньше, обработать?
create TABLE "commit" (
Id bigint(20) not null,
"Date" datetime not null,
Temperature double not null,
Wet varchar(255),
Room bigint(20),
PRIMARY KEY (Id),
FOREIGN KEY (Room) REFERENCES room (idRoom)
);
create TABLE room (
idRoom bigint(20) not null,
Index varchar(5) not null,
Type varchar(5),
Status bigint(20),
"Commit" bigint(20),
PRIMARY KEY (idRoom),
FOREIGN KEY ("Commit") REFERENCES "commit" (Id),
FOREIGN KEY (Status) REFERENCES "commit" (Id)
);