Есть задача — получать актуальную информацию с пульта С2000М (режим - принтер) по com-порту на ESP8266.
Реализовано:
1. Подключение С2000М → esp8266 : RxT → TxD, TxD → RxD, GND → GND; 2. Подключение esp8266 → TTL/USB → ПК : D7 → TxD, D8 → RxD, GND → GND 3. Простой скетч чтения данных с физического сом-порта (Rx,Tx esp8266) и отправка на программный порт (D7, D8 esp8266) к которому подключен ПК, через преобразователь TTLtoUSB.
Что работает:
1. При включении esp8266 (подал питание, воткнул TxD от пульта в RxD esp8266) пульт С2000М сообщает ВКЛ. ПРИНТЕРА, далее при наборе пароля 1234 на пульте, в терминал ПК (Linux) поступают сообщения от esp8266, которые он в свою очередь вычитывает из порта C2000M. (В настройках терминала указана кодовая страница cp866.) Сообщения завершаются текстом «End process!» сформированным программно в esp8266.
Что не работает: 1. Сообщения от пульта не соответствуют ожидаемому результату, т. е. совершенно - Пример:
при этом завершается вполне логично - End process! , но эта строка отправляется от esp8266.
При отключении esp8266 пульт пишет ВЫКЛ. ПРИНТЕР.
Размышления:
Неправильная кодировка символов - программа читает с порта данные побайтово в массив, не изменяя значений (пробовал массив char, uint8_t) и в таком же виде выдаёт в терминал. Если бы в терминале выход был неправильным, то контрольная строка - «End process» тоже была бы со сбоем. Терминал настроен на приём кодовой страницы cp866.
Далее беру байт-код (надеюсь символа) из ком-порта от пульта, сопоставляю ему значение из стандартной таблицы cp866 и увы — никакого признака на что-то осмысленное — получается опять же набор букв как в примере выше, т. е. данные прихоят от пульта именно в таком виде.
Вопрос: Где ошибка? В программе, в подключении, в отсутствии обработки данных от пульта?
Здравствуйте. Я в этом режиме не пробовал работать с пультом.
У esp8266 уровни последовательно порта вроде TTL, для подключения к пульту нужен преобразователь на микросхеме max232 или ее варианты.
В режиме принтера на вход пульта Rx нужно подключать не Tx, а DTR последовательного порта и выдавать на нем высокий уровень. Непонятно почему пульт понимает что включен принтер при подключении Tx вместо DTR.
программа PEventReader, позвольте поинтересоваться, Вы, являетесь её автором?Да, я.
О! Я рад, что могу выразить Вам благодарность за эту программу. Это бесценная программа! Благодаря ей удаётся таки объяснять заказчикам, что сама по себе просто так кнопка запуска пожаротушения не нажимается и прочее в том же духе. Огроменное Вам спасибо! Крепкого здоровья Вам, успехов во всех делах счастья и мирного неба над головой Вам, вашим родным и близким.