понимание терминалов VT100/ANSI

Я работаю над небольшим серверным приложением на С#, которое должно предоставлять терминальный интерфейс VT100/ANSI (либо через telnet, либо через модем).

Я занимаюсь исследованием VT100/ANSI, и чем больше я читаю, тем больше запутываюсь. Я хочу реализовать простой синтаксический анализатор для работы с управляющими последовательностями ansi, но спецификации содержат множество возможных команд. В общем, мои вопросы сводятся к следующему:

1) Какие команды мне следует реализовать, если я имею дело с клиентами на основе telnet (например, putty) или с простой программой коммутируемого доступа (например, minicom или гипертерминал). Я уверен, что многие escape-последовательности просто не используются или игнорируются в этих приложениях.

2) Нужно ли мне обрабатывать управляющие символы C0 только в том случае, если они имеют префикс с символом ESC? Или также, когда я встречаю их в обычной текстовой последовательности? Я не могу получить эту важную информацию из документов.

3) Должен ли я заботиться о частных управляющих последовательностях?

Заранее спасибо,

Йерун.


person Jeroen Jacobs    schedule 22.03.2012    source источник
comment
возможный дубликат библиотеки C# Telnet   -  person Hans Passant    schedule 23.03.2012
comment
Не совсем так, команды Telnet отличаются от управляющих кодов VT100.   -  person Jeroen Jacobs    schedule 27.03.2012


Ответы (1)


Вам в любом случае придется обнаруживать управляющие последовательности; однако вам не нужно интерпретировать их все, но, по крайней мере, вы должны иметь возможность их пропустить.

Например, Esc[5m включает режим мигания. Если вы хотите игнорировать этот режим, просто пропустите "Esc[5m".

Я не думаю, что управляющие символы C0 имеют префикс ESC.

Я никогда не сталкивался с этими частными управляющими последовательностями. Подождите, чтобы увидеть, используются ли они. Нет смысла внедрять то, что, возможно, никогда не будет использовано.

person Olivier Jacot-Descombes    schedule 22.03.2012
comment
верно, но я думаю, что некоторые из них на самом деле не являются обязательными. Например, я не думаю, что мне сойдет с рук игнорирование последовательностей команд XON/XOFF, и я должен, по крайней мере, ответить на ESC [c (=код запроса устройства), я думаю. А затем есть некоторые команды C0, о которых я совершенно ничего не знаю, например: коды C0 SOH (= начало заголовка), EM (= конец среды) и т. д. - person Jeroen Jacobs; 23.03.2012
comment
Не все эти коды будут использоваться. Поможет только эксперимент. XON/XOFF являются частью протоколов связи и не используются для управления дисплеем. - person Olivier Jacot-Descombes; 23.03.2012