form, Что-то мы съехали с темы. Давай лучше сюда- http://zx-pk.ru/showthread.php?t=22601
Вид для печати
form, Что-то мы съехали с темы. Давай лучше сюда- http://zx-pk.ru/showthread.php?t=22601
Причина в неправильном написании.
Чтобы был один стоповый бит - надо так:
Чтобы было полтора стоповых бита - надо так:Код:StopBits = ONESTOPBIT
Все настройки точно копируют значения из DCB structure. Можно использовать текстовое значение (с учётом регистра) или числовой эквивалент из таблицы.Код:StopBits = ONE5STOPBITS
Спасибо. Предлагаю внести настройки в следующий релиз уже в самой программе. То есть менять на "лету".
---------- Post added at 01:47 ---------- Previous post was at 01:09 ----------
Patron, Подключил плату с клавиатурой от терминала Mera СМ7902 к эмулятору VT52. Далее напечатал с терминала цифры и первый ряд букв в двух режимах эмулятора.
Вот что получил на экране эмулятора.
http://s018.radikal.ru/i524/1408/3d/32d087716839.jpg
От первой единицы до h в режиме ЛАТ. От второй единицы до Х в режиме РУС.
Это так и должно быть?
Обновилась текущая сборка эмулятора терминала типа VT52: VT52_30.09.14_15-40
Изменения:
1. Программа обновлена до текущей версии.
2. Исправлен файл конфигурации HX_IP.cfg.
...
Обновилась текущая сборка эмулятора терминала типа VT52: VT52_08.10.14_16-54
Изменения:
1. В объект Terminal_IP_Adapter добавлена первичная поддержка протокола Telnet, настраиваемая константой NetMode в ini-секции объекта в файле конфигурации:
Возможные значения: Raw, Telnet и Auto ( по умолчанию Auto ).Код:[IP_Adapter.ini]
Listen_on_IP =""
Listen_on_Port = 0
Connect_to_IP = 127.0.0.1
Connect_to_Port= 8023
Extended_Log = 0
ReConnect = 1
InitialStateOf[Connect] = 1
SaveChangesFor[Connect] = 0
NetMode = Auto
В режиме Raw обработка команд протокола Telnet и перекодирование байтов 0377 не производится.
В режиме Telnet все команды Telnet удаляются, байты 0377 перекодируются, при получении из интернета команды Telnet BREAK - в поток байтов посылается набор команд: ClearFIFO, BadFrame = 0, BreakOn, BreakOff = 250 мс, а при получении из потока байтов команды BreakOn - в интернет посылается команда Telnet BREAK.
В режиме Auto - в первую секунду соединения обмен данными не производится и ожидается согласование Telnet. При начале согласования устанавливается режим Telnet, иначе - режим Raw.
Когда сервер находится в режиме Auto, он при приёме входящего соединения, вместо начала согласования Telnet - отправляет клиенту приглашение согласования в виде двух нулевых байтов.
Когда клиент находится в режиме Auto, он воспринимает получение двух первых нулевых байтов от сервера, как приглашение к согласованию Telnet.
Все принятые и переданные команды Telnet протоколируются в порту [Log] ( обычно этот порт объекта Terminal_IP_Adapter подключен к консоли с именем IP_Log ).
...
Patron, Звездные войны так и не показывает. Правда там упомянут протокол IPv6 может это как то связано?
Там действительно коды VT100 (ANSI). В режиме VT52 (если терминал не поддерживает HOLD SCREEN) действительно будет показывать потому что там тупо выводится полный экран для каждого кадра, а "срывается" потому что на экране остается мусор от неотработанных ANSI ESC последовательностей :)
Patron, Будете смеяться, но в Гипертерминале вообще идеально пошёл в режиме телетайпа 33 (весь фильм не смотрел). Почему то всегда думал что VT52 и телетайп совместимы по командам но вроде отличия есть. А сначала тоже грешил на VT100. :)
---------- Post added at 21:21 ---------- Previous post was at 21:09 ----------
form, В Гипертерминале в режиме VT100 тоже срывается картинка.
form, В режиме VT100 я не снял галочки с опций CR+LF а так нормально работает. Вот почему тогда в режиме телетайпа нормально идет, непонятно. В прочем ладно, будем считать что фильм транслируется в ANSI.
Patron, Что то приглашение консоли Телнета Windows не показывает (соединение есть). На старой версии VT52 показывало. Гипертеминал даёт приглашение.
Я уже объяснил почему - он тупо перерисоввывает всю страницу, а не меняет отдельные ее элементы.
А чего там считать - WAR на CTAKAH'е сделан дампом телнетной передачи, и уж поди помню что там внутри :) -- всего одна ESC последовательность <ESC>[H (всмысле один тип последовательности) :)
Возможно телнетный клиент включается в построчный, а не посимвольный режим (особенно если соединение не на 23 порт).
Попробовал натравить на telnet listener в DS90M, соответствующий консоли 11/83. После передачи кода просто тишина, прога загрузчика не вылетает. Впрочем тут наверное надо как-то включать telnet binary mode чтобы заработало.
Попробовал на роутере по телнету запускать cu который подсоединяется к DS90M. Тут код вылетает в одном и том же месте. Более детально пока не разбирался...Код:Network Access SW V3.2 BL01 for DS90M
DECserver 90M, Novosibirsk, RU
(c) Copyright 2005, Digital Networks, DNPG, LLC - All Rights Reserved
Visit us at www.digitalnetworks.net
Please type HELP if you need assistance
Local> SE PO TY SO
Local> C BIGSYS_CONS
Password>
Local -010- Session 1 to BIGSYS_CONS on node PDP11.ORG.RU established
Local> SE SES PAS
Local> RE
Local -012- BIGSYS_CONS session 1 resumed
Testing in progress - Please wait
Memory Size is 4088 K Bytes
9 Step memory test
Step 1 2 3 4 5 6 7 8 9
Message 04 Entering Dialog mode
Commands are Help, Boot, List, Setup, Map and Test.
Type a command then press the RETURN key:
165216
@10000/000000 12706
00010002/000000 10000
00010004/000000 12746
00010006/000000 340
00010010/000000 12746
00010012/000000 10016
00010014/000000 2
00010016/000000 4567
00010020/000000 14
00010022/000000 105737
00010024/000000 177560
00010026/000000 100375
00010030/000000 113703
00010032/000000 177562
00010034/000000 207
00010036/000000 105737
00010040/000000 177562
00010042/000000 105737
00010044/000000 177564
00010046/000000 100375
00010050/000000 112737
00010052/000000 26
00010054/000000 177566
00010056/000000 12700
00010060/000000 1000
00010062/000000 5004
00010064/000000 4715
00010066/000000 110324
00010070/000000 5300
00010072/000000 1374
00010074/000000 5007
@10000G
000576
@
@
@10000/012706 12706
00010002/010000 10000
00010004/012746 12746
00010006/000340 340
00010010/012746 12746
00010012/010016 10016
00010014/000002 2
00010016/004567 4567
00010020/000014 14
00010022/105737 105737
00010024/177560 177560
00010026/100375 100375
00010030/113703 113703
00010032/177562 177562
00010034/000207 207
00010036/105737 105737
00010040/177562 177562
00010042/105737 105737
00010044/177564 177564
00010046/100375 100375
00010050/112737 112737
00010052/000026 26
00010054/177566 177566
00010056/012700 12700
00010060/001000 1000
00010062/005004 5004
00010064/004715 4715
00010066/110324 110324
00010070/005300 5300
00010072/001374 1374
00010074/005007 5007
@10000G
000576
@
@
@550/110567
00000552/177334
00000554/066767
00000556/177330
00000560/177324
00000562/105737
00000564/177564
00000566/176777
00000570/000114
00000572/000204
00000574/000000
00000576/000114
Это сервер, со стороны клиента эм.VT52.
Не знаю какой там режим но работает с командной строки, а порт для Телнета стандартно 23.
Нормально загрузился.
Конфигурация такая.
VT52(PC)<>Switch<>конвертер MOXA NPort-COM<>COM-КЦГД-MC
И всё таки, как выйти на Телнет Windows?
Спасибо.
Patron, Давайте всё по порядку.
Запускаем службу Телнет.
Правой кнопкой мышки нажимаем на "Мой компьютер" выбираем "Управление" далее "Службы и приложения" - "Службы". В службах выбираем Телнет -свойства - пуск.
В эмуляторе меняем порт с 8023 на 23.
И должно выйти приглашение
Welcome to Microsoft Telnet Service
login:
Со стороны службы сервер, со стороны VT52 клиент.
Розбрался, в чём проблема Telnet-сервера Windows - на некоторых этапах согласования опций он ждёт ответа до упора и при отсутствии ответа обмен висит.
В следующем релизе соответствующие отказы будут отправляться клиентом, а пока решение следующее - установить NetMode = Raw, а в файле Terminal.ini назначить на какую-нибудь клавишу ( вроде <F4> ) нужный Telnet-серверу Windows набор отказов:
Тогда, после установления соединения - обмен будет висеть только до нажатия клавиши <F4>.Код:ANSI_STR_FOR_KEY[F4] = "\377\374\045\377\374\047"
Также можно в следующем релизе сделать кнопку Break для вызова пульта в Эл.85 (какой код я уже писал).
Спасибо.
Patron, Опять засада. При изменении на RAW эмулятор всё равно ставит на AUTO. Кнопка F4 с соответствующими изменениями не чего не даёт.
Patron, Да, наверно привычка от RT11. :)
Интересно ещё вот что.
Пишет Welcom to...... Login: нормально а после ввода пароля непонятные символы. Это что, сервер меняет кодировку?
Если можно то пускай VT52 запретит ему менять кодировку.
Обновилась текущая сборка эмулятора терминала типа VT52: VT52_24.10.14_16-10
Изменения:
1. Теперь словесные эквиваленты значений параметров и констант не чувствительны к регистру символов.
2. Теперь при работе по протоколу Telnet на каждое предложение WILL и DO с номером опции больше 03 - выдаётся индивидуальный отказ.
...
Patron, Есть небольшое пожелание.
Добавьте пожалуйста опций дампа, где опции имеют такие функции:
1)опция
Запись дампа только Телнет команд где из общего потока фильтруется 3 октета а определение по команде IAC (377).
1 октет (IAC), 2 октет (команда) 3 октет (опция команды)
2)опция
Всё тоже самое только в десятеричной системе.
3) опция
Всё тоже самое только кроме числового значения верхней строчкой, нижней строчкой идет название самой команды. (типа перевод)
Так легче будет отлавливать те команды сервера, на которые не реагирует VT52. Так же если сделать идентификатор терминала где терминал сообщает серверу что он VT52, то тогда сервер будет работать только в ASCII и не будет передавать "чужие" команды/запросы типа VT100, ANSI и т.п.
Спасибо.
В окне IP_Log дампятся все принятые и отправленные команды Telnet.
Terminal_IP_Adapter реагирует на все команды Telnet, передавая отказы от их выполнения ( если на команду требуется ответ ).
Терминал ничего не знает про Telnet, а Terminal_IP_Adapter - ничего не знает про терминал, поэтому такое дополнение сделать сложно.
Терминал не получает команды Telnet - это делает адаптер, который ничего не знает ( и не имеет возможности узнать ) о подключенных к нему устройствах.
---------- Post added at 18:45 ---------- Previous post was at 18:32 ----------
Можно добавить в опции адаптера что-то вроде текстовой константы ReportTerminalType с пустым значением по умолчанию. Тогда, если туда что-то написать - эта строка будет выдаваться в ответ на запрос типа терминала по Telnet.
Попутно замечу, что VT52 - неправильный тип терминала. Правильный DEC-VT52, а просто VT52 - это случай когда прогнулись под криворуких программеров и решили, что проще смириться :)
Но при входе например на OpenVMS по телнету разница будет заметна - там понимаются только правильно написанные (согласно rfc884) типы...
Терминалу не чего и не требуется что то узнавать, поэтому речь идет об адаптере. В настоящем VT52 вообще кроме токовой петли нечего нет. Согласование протокола приёма/передачи нужно для того чтобы сервер не присылал "чужие" команды а работал в только режиме приёма/передачи VT52.
---------- Post added at 18:56 ---------- Previous post was at 18:53 ----------
Возможно что в Майкрософт упростили так как там пишется просто VT52.
form, тут надо бы уточнить несколько моментов. OpenVMS который в составе эмулятора не спрашивает о типе терминала. Скорей всего он и так работает в режиме VT52.
Какая ещё операционка может менять протокол в соответствии типа терминала.
Посмотрел RFC1091, там довольно таки много вариантов согласования но везде пишется "TERMINAL-TYPE". Это как, срока пишется в команде или подменяется названием терминала?