Игорь, у вас по одному регистру за команду читается, а qModMaster сразу несколько запрашивает одной командой поэтому ответ длиннее получается.
Николай, наоборот, я подряд идущие регистры одной командой опрашиваю. По отдельности опрашиваю, только если между ними "дырка" есть. Поэтому может пакет короче.
Ну значит мои ответы должны приходить так как через 3мс начинаю отвечать.
Игорь, а "нет ответа" по каким критериям формируется 20мс и чужой адрес или еще чего есть?
Прием ответа выглядит так:
после передачи запроса ждать 20ms
если получен байт и он совпадает с кодом опрашиваемого датчика то
если получен байт и он совпадает с кодом отправленной команды то
если получен байт длины данных то
если удалось загрузить данные то
если загружена контрольная сумма то
проверить контрольную сумму, если не совпадает, то взвести флаг ошибки CS и выйти
только в случае совпадения контрольной суммы будет результат "ответ получен"
вот на всякий случай кусок кода чтения регистров.
read_code.jpg 89.91К
5 Количество загрузок:
Получается канал передачи в max485 не отключается от линии при режиме приема? Вроде бы не должно такое быть.
Да странно как-то, но ошибки у меня резко после этого упали.
Переделал управление направлением max485 от ножки МК амплитуда ответа увеличилась.
Воткнул пару датчиков в горшки линия КСПБ 4 х 0.5 питание на ней же.
http://yadi.sk/d/lA_nKMuGAn4Fv
один датчик с сенсором на разъеме, второй на проводочках.
датчики одинаковые прошивки тоже, а ошибки шлют по разному.
http://yadi.sk/d/_QSLBtMyAn4rq
на показания температуры почвы не смотрите там на одном подкорочено, а на втором lm-ки нет.
Ну так и процент ошибок с контрольной суммой резко упал. Я попробую перед ожиданием ответа датчиков входной буфер COM порта почистить, может там какой мусор набитсья успевает. Добавлю отладочный код, чтобы знать какой байт пришел не так и пришел ли вообще. Если завтра не успею, то уже только в четверг, у нас праздники, уеду из города.
Странные у вас растения какие-то
Загрузить сохраненный датчик из файла (.sns) в управляющей программе не удалось приложение выдает ошибку: "Error reading TSGDevice.FlushOn: Property FlushOn does not exist."
Возможно датчик сохраненный в файл был "влажность/температура", а загрузка производилась в "универсальный" датчик, у него действительно нет свойства "уровень включения полива" (FlushOn).