Добрый день. Хочу снимать параметры ИБП Powerman Online 1000 Plus по порту RS232 вместо штатной UPSilon2000. Подключил переходник RS232-UART, к нему обычный USB-UART на чипе CP2102. Поставил снифер Serial Port Monitor и запустил UPSilon2000. Посмотрел, что приходит в порт. Протокол тут другой, чем у APS. Для запуска обмена отправляется F\r, потом Q1\r. После чего приходит строка с данными.
Проверил между 2 ардуинами, работает. А ИБП ничего не отправляет. Может кто подскажет, что я делаю не так? В коде на один F отправляю 4 Q1.
P.S. Еле разобрался, как писать и форматировать текст. ИМХО, старый форум был как то лучше. Интуитивно понятней.
Вы выкладываете заведомо не рабочий скетч. Пишите, что исправили, но по факту как не было чтения mySerial, так и нет.
Что у вас в рабочем скетче, не известно.
Напишите рабочий тестовый скетч, который реально запускаете.
Сначала попробуйте отправлять только команду F\r На нее ведь должен быть ответ?
Из замеченного - Сейчас у вас n++ не логичен - начинается не с отправки F, возможны перескакивания через значения, т.к. ++ в любом случае, а проверка только если буфер пустой. Не пишите вложенные if на одной строке (хотя бы когда спрашиваете), трудно читать.
Да совершенно верно, но пока не соображу, как сделать иначе. Ответ начинается после последовательности F, Q1. Приходится часть Q1 пропускать впустую, пока не придет F. Потом всё начинает идти по порядку.
И ещё не понятно, в скетче n = 10. А количество Q1 и соответственно ответов в половину меньше. Странно, почему так?
В F установленные параметры. В принципе не надо. Но UPSilon2000 периодически опрашивает его. Пусть будет. К тому же наблюдая за обменом, информация появляется после комбинации F, Q1. Вдруг если собьется, то при таком варианте опять восстановится.
Значит пойдет такая конструкция. Спасибо. Буду делать дальше. Сделаю http сервер на esp8266 и буду отправлять туда.
Да кстати, заодно спрошу, строка в ИБП начинается со ( или # . Как в scanf отбросить первый символ?