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'ом и подобными вещами.

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 12:48 pm
Powered by Dreamwidth Studios