2009-10-29 5 views
1

Вот пример строки, с которой я получил поток сокетов.C#: преобразовать строку, предназначенную для использования оболочки unix для командной строки Windows

\033[H\033[J\033[1;30HSUPERVISOR MAIN MENU\033[6;5H 0. Exit   Exit\033[7;5H 1. Help   Display help\033[8;5H 2. Control  Calling lists and users\033[9;5H 3. Campaign  Campaigns\033[10;5H 4. Manage 

Если вы хотите увидеть результат я ожидаю открытия/Linux оболочки Unix, тип эхо -e, за которым следует пробел, затем выше строки в одинарных кавычках и нажмите клавишу ввода. Выход появляется что-то вроде:

     SUPERVISOR MAIN MENU 


0. Exit   Exit 
1. Help   Display help 
2. Control  Calling lists and users 
3. Campaign  Campaigns 
4. Manage 

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

+0

просто любопытно ... чей сокет поток? и почему ты смотришь на это? –

+0

только что открыл сокет, который подключается к одному из наших блоков unix. Мы просто интересуемся данными, которые мы получаем от этого ... на основе того, что мы хотим выпустить команды ... – deostroll

ответ

1

Я задал почти эквивалентный вопрос несколько часов назад: Open Source C# VT100 Server. Вы хотите, чтобы клиентская библиотека понимала команды удаления vt100.

Я искал вокруг какое-то время, и на сегодняшний день не найдены очень хорошие библиотеки vt100 C#. Я начал работать на обычном, и, поскольку мне действительно нужно только интерпретировать левую и правую стрелки и backspace, это не заняло много времени.

К счастью, стандарт vt100 очень беспорядочный и не слишком сложный. Я не думаю, что вам потребуется очень много времени, чтобы взломать код, чтобы понять команды escape в вашем примере. Эта ссылка имеет красивый краткий список VT100 escape sequences (вам нужно немного прокрутить список). Еще один хороший сайт - vt100.net.

В вашем примере escape-последовательности находятся в восьмеричном. Ваша первая управляющая последовательность:

\033[H 

, которая переводится в ASCII ниже и используется для установки положения курсора.

ESC [ H 

Второй является

\033[J 

который переводит к последовательности ASCII ниже, и означает, очевидно, линию до конца экрана.

ESC [ J