Как обрабатывать входящие управляющие символы в пользовательском терминале? - PullRequest
1 голос
/ 28 сентября 2011

Для моего проекта мне нужно было создать собственное оконечное окно и подключиться к маршрутизатору Cisco через консольный порт. Поэтому я унаследовал TextBox и создал собственный элемент управления в WPF. И я подумал, что этого будет достаточно; просто добавить код для реализации дополнительных функций, которые я хотел. Я отправляю по одному символу за раз и жду ответов. Но потом я увидел, что мой пользовательский терминал не обрабатывает специальные символы, такие базовые, как \ n, конечно, распознаются, а все остальные - нет. Я написал ответы на текстовый файл, и я вижу, что у меня довольно много таких специальных, но я не знаю, как мне реагировать. Может быть, кто-то знает или нашел какие-то ссылки с информацией о том, как реагировать на конкретного управляющего персонажа? Я только нашел, какие символы отправляют сюда , но больше ничего об этом. Я понимаю, что для "BS" я буду удалять один символ перед переносом, но что мне делать, если я получу "ACK" или "DC1"? Может мне просто их пропустить? Есть идеи?


Edit: Помимо отправки по одному символу за раз, я получу ответ только тогда, когда отправлю ввод или такие символы, как? или TAB. Затем, когда я получаю ответ, он смешивается со специальными символами для форматирования текста, как в окне терминала 80x25. И я хотел бы просто отобразить его так, как он хочет, но это означает, что мне нужно знать, как реагировать, когда я получаю специальные символы, мне не нужно их отображать, просто форматировать обычный текст на основе специальных символов, которые я тоже получение. Когда я получаю BS, мне нужно очистить символ перед перевозкой, когда я получаю DEL, мне нужно очистить символ после перевозки. И я хотел бы знать, что мне нужно делать, когда я получаю другие специальные символы. Я знаю, что могу сделать это трудным путем и просто отправить их на работающий терминал и посмотреть, что он будет делать, но это займет некоторое время, поэтому мне интересно, может быть, кто-то знает ответ.

1 Ответ

0 голосов
/ 05 октября 2011

Хорошо, я очень тяжело играл с терминалом, и теперь я знаю, что единственный специальный символ, который мне нужно обработать, это BS (конечно, я пробовал это только с маршрутизаторами Cisco, но мне просто нужно работать с ними), единственная проблемаявляется то, что вам нужно создать свой собственный код, чтобы он работал и переместить каретку в нужное место на основе количества BS.А лучше создайте собственную переменную для хранения индекса каретки, потому что TextBox CaretIndex просто не хотел работать так, как я ожидал.Остальные специальные символы могут быть, насколько я знаю, опущены.И это прекрасно работает, как я хотел.

...