eddy_em: (Default)
[personal profile] eddy_em
Давно уже надо было добавить всяких полезностей в терминальный клиент и пофиксить кое-какие баги. Основное — режимы ввода и отображения данных. При вводе доступны такие режимы.
  • TEXT — все, что ввели, отправляется; строки завершаются заданным в параметрах командной строки EOL. Непечатаемые символы можно через escape-последовательности вводить.

  • RAW — пробелы не учитываются; текст отправляется как текст; числа в пределах 0..255 распознаются в системах по основанию 2, 8, 10 и 16.

  • HEX — все числа трактуются как шестнадцатеричные; если число длинное, оно разбивается на пары и считается одним байтом; пробелы игнорируются.

  • RTU RAW — тот же RAW, но каждый раз в конце посылки вставляется контрольная сумма.

  • RTU HEX — тот же HEX, но с контрольной суммой.


При выводе доступны режимы TEXT (непечатаемые символы выдаются как "0xXX"), RAW (в 16-й форме с разделением пробелами) и HEX (в формате hexdump -C).
Учитывая то, что в скором времени придут китайские частотники, с которыми надо будет экспериментировать (понимаю ли они широковещательный адрес, или придется каждый оснащать переходником CAN-modbus), очень даже вовремя я это все доделал.

И немножко картинок. Вот так выглядит экран в режиме вывода HEX:

По F1 можно посмотреть справку:

Заодно добавил возможность вывода сообщений об ошибках (черным на красном фоне поверх строки статуса) — буду пользоваться этим в дальнейшем развитии терминала.
А вот так он принимает в формате RTU HEX и добавляет контрольную сумму (чтобы принимать эхо, я воткнул в USB PL2303 с замкнутыми Rx-Tx):

Избавился от пары сегфолтов (бывает: для увеличения буфера char** на N штук, я увеличивал его на N байт), добавил обновление экрана в реальном времени (до этого wgetch у меня была блокирующей, поэтому после изменения размера экрана нужно было какую-нибудь кнопку нажать, чтобы это все дело отработало).
Вот я еще обратил внимание, что надо бы мне добавить возможность работы с обычным сокет-файлом, т.к. иначе для эмуляции работы с сокетами нужно или сервер какой-то простой рисовать, или пользоваться netcat'ом, socat'ом и подобными вещами.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 12:30 pm
Powered by Dreamwidth Studios