|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Подключение PS/2 клавиатуры через COM порт
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вариантов особых нет - через COM порт. Странно, что я не нахожу информации по ним, или гуглю не так, или умный гугл меня не понимает... P.S. Хотя я глянул - по заказу может быть любой интефейс по желанию заказчика.P.P.S. Вот здесь, кстати, есть какой-то фришный софт:Free RS-232 to keyboard software
_________________ iLavr
|
20 Nov 2016 10:47 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Прямо очень странное дело! Весь интернет только и занят тем, что делает и продает переходники для клавиатур: PS/2 -> RS-232А поскольку RS-232 отжил своё, то и переходники RS-232 -> USB . А реальную ASCII Serial Keyboard я увидел только у одного джентльмена - он это своё старьё очень любит и не расстался с ним! http://projects.worsleyassociates.com/SerialKeyboard/index.htmlЕще пару штук видел на Е-бее, но там непонятно что...
_________________ iLavr
|
20 Nov 2016 14:50 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
А почему такой клавиатуре просто не эмулировать какой-нибудь терминал? Например, VT-100. Очень стандартное решение, на мой взгляд, и очень поддержанное программным обеспечением.
|
20 Nov 2016 23:48 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Виталий, так я и хочу это узнать- какой стандартный протокол используют Serial-клавиатуры, но нигде не могу пока это узнать... Понятное дело, что я собираюсь подключать её к Windows-98(ХР), как рассказывал в этом топике. Значит они должны друг друга как-то понимать...
_________________ iLavr
|
21 Nov 2016 05:09 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1388 Location: Abakan
|
Судя по тому, что пишут тут: http://hiprog.com/forum/read.php?id_for ... theme=3859...там просто ASCII подают на вход. А дальше крутитесь аки хотитесь
|
21 Nov 2016 06:12 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну мне что-то в это не верится, мы же увидели, что есть клавиатуры промышленного дизайна с RS-232, а клавиатуру - воткнул и должно работать. Вот даже пример выше это мужика с любимой старой serial-клавиатурой, она у него и Ctrl и Alt отрабатывет как положено - просто слишком старА, чтобы взять её за образец... Хотя... если ничего лучше не найду - её и возьму за образец, хоть подробно всё расписано.
_________________ iLavr
|
21 Nov 2016 10:04 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ага!... Оказывается, приличные ASCII Serial клавиатуры - просто дифицит! Using a PC style keyboard as an ASCII keyboard
_________________ iLavr
|
22 Nov 2016 17:41 |
|
|
be3
Junior
Joined: 06 Jun 2018 04:13 Posts: 5
|
Подскажите, а как всетаки подключить rs232 клавиатуру под DOS? Пытаюсь переделать клавиатуру Palm portable keyboard под rs232 (она кстати и так работает с кпк palm, по rs232), для подключения к старинному кпк HP 200lx
|
06 Jun 2018 04:22 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Извините, вот под DOS сейчас никак не подскажу... Материалы я эти гуглил довольно давно, и под DOS мне даже попробовать не пришлось. Хорошо это получилось нативными средствами Win98 - WinXP. Под более старшими вендами это средство почему-то убрали, и нужна сторонняя утилита. P.S. Чисто по памяти предполагаю, что под DOS прерывание клавиатуры надо заменить прерыванием от COM-порта, возможно, с некоторыми доработками...
_________________ iLavr
|
06 Jun 2018 05:47 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем, есть в природе такой драйвер для подключения Serial(RS-232) keyboard под DOS: cdrvkeyb.exe. COMM-DRV/Dos – High speed MS-DOS serial communications driverи вроде бы как его дают скачать вот здесь (я сам не пробовал): Download Dos Serial Port Driver
_________________ iLavr
|
06 Jun 2018 14:22 |
|
|
be3
Junior
Joined: 06 Jun 2018 04:13 Posts: 5
|
Lavr, спасибо за наводку, протестирую и отпишусь о результатах.
|
06 Jun 2018 17:09 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Мне самому стало интересно, поскольку сам бы я сел писать драйвер под DOS на ассемблере...
_________________ iLavr
|
06 Jun 2018 17:51 |
|
|
be3
Junior
Joined: 06 Jun 2018 04:13 Posts: 5
|
Пока не смог найти это драйвер выше, поищу более детально (но скорее всего он платный + не оч. распространен и как следствие бесплатно не скачать). Существует драйвер под DOS (c исходниками на ASM - NTKEY2LX.COM) от клавиатуры Apple Newton Keyboard, которая работает по rs232, возможно драйвер универсален, или его можно "отвязать" от особенностей работы Newton Keyboard. (драйвер прикрепил) В ассемблере не разбираюсь, но буду пробовать все варианты . Второй вариант, это спаять адаптер " Переходник из PS/2 в RS232" прошивка которого, как раз написана под - Windows CE драйвер Newton Keyboard и под MS DOS использовать драйвер NTKEY2LX.COM.
|
07 Jun 2018 03:44 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да это понятно - время DOS давненько ушло... И все эти утилиты скорее всего надо искать по страницам типа "Старый DOS" и спрашивать на тематических форумах по старым компам... Я, к сожалению, сейчас по своей работе занят, поэтому не могу активно вам помочь. Но если решите справиться с проблемой сами, я бы порекомендовал подсматривать в «Справочник программиста персональных компьютеров типа IBM PC, XT и AT» автора Р. Джордейна - в нем хорошо расписаны все эти вопросы под DOS. Я скачал ваши материалы - если случится свободная минутка - тоже посмотрю, мне чисто интересно. P.S. Посмотрел исходник сразу - там именно это и делают, что я и предполагал:Вот фрагмент кода, где вектор прерывания подменяют: | | | | Code: ; Hook vectors ; ; IN: none. ; OUT: none. ; EVEN vecthook proc near pushf cli
push ax push bx push es
mov ax,0000h mov es,ax
mov bx,ki_hook_vec * 4
mov ax,es:[bx] ; original vector offset value mov ki_org_off,ax mov ax,es:[bx+2] ; original vector segment value mov ki_org_seg,ax
mov ax,offset key_hook mov es:[bx],ax mov ax,cs mov es:[bx+2],ax
mov bx,tt_hook_vec * 4
mov ax,es:[bx] ; original vector offset value mov tt_org_off,ax mov ax,es:[bx+2] ; original vector segment value mov tt_org_seg,ax
mov ax,offset tim_hook mov es:[bx],ax mov ax,cs mov es:[bx+2],ax
mov bx,(SER_IRQ+8)*4 ; make INT vector offset.
mov ax,es:[bx] mov com_org_off,ax mov com_reh_off,ax mov ax,es:[bx+2] mov com_org_seg,ax mov com_reh_seg,ax
;;; mov ax,offset com_hook ;;; mov es:[bx],ax ;;; mov ax,cs ;;; mov es:[bx+2],ax
pop es pop bx pop ax
popf
ret vecthook endp ; ; Unhook vectors ; ; IN: none. ; OUT: AX resident program segment ; EVEN vectunhook proc near push es push ds push bx
xor ax,ax mov es,ax ; INT9 vector segment
mov bx,ki_hook_vec * 4 ; INT9 vector offset mov ax,es:[bx+2] ; get resident program segment. mov ds,ax
pushf cli
mov bx,ki_hook_vec * 4
mov ax,ki_org_off ; use resident program segment. mov es:[bx],ax mov ax,ki_org_seg ; use resident program segment. mov es:[bx+2],ax
mov bx,tt_hook_vec * 4
mov ax,tt_org_off ; use resident program segment. mov es:[bx],ax mov ax,tt_org_seg ; use resident program segment. mov es:[bx+2],ax
mov bx,(SER_IRQ+8)*4 ; make INT vector offset.
mov ax,com_org_off ; use resident program segment. mov es:[bx],ax mov ax,com_org_seg ; use resident program segment. mov es:[bx+2],ax
popf
mov ax,ds ; save resident program segment.
pop bx pop ds pop es ret vectunhook endp | | | | |
INT 9 - это прерывание от клавиатуры: Keyboard Interrupt (Hardware Handler). Что в этой ситуации плохо - некоторые программы сами подменяют INT 9 и работают с клавиатурой напрямую. Они либо не будут работать, либо драйвер их должен обманывать. Я сталкивался с такой ситуацией - так поступает QBasic. Долго мучался как его обмануть...
Но в целом исходники понятные, хорошо прокомментированные и удобочитаемые. Я правда, не знаю, насколько в них отражены и как помешают особенности работы Newton Keyboard.
_________________ iLavr
|
07 Jun 2018 07:58 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Потратил я немного времени, чтобы посмотреть какую-либо техническую информацию по этим самым клавиатурам с RS-232 интерфейсом: Palm portable keyboard и Apple Newton Keyboard... Заинтересовало, поскольку по ASCII Serial keyboard я тут в первый заход ничего путного не нашел. Теперь хоть знал - что конкретно искать, хотя задачу это сильно не облегчило - уходит эта информация, ссылки битые, на других ссылках уже и информация другая... Но по Palm portable keyboard я некоторую техническую информацию нашел! http://wb9kzy.com/palm.htm ; http://www.splorp.com/pdf/stowawayhwref.pdfВ мануале stowawayhwref.pdf расписаны особенности RS-232 интерфейса к Palm и приведена таблица кодов: Key Code Matrix. При взгляде на таблицу, возникает мысль, что Palm portable keyboard - это не ASCII Serial keyboard, и, возможно, в драйвере придется сделать перекодировку либо в скан-коды, либо - сразу в ASCII-коды. Насколько я успел посмотреть, в тексте драйвера NTKEY2LX.COM какая-то перекодировка вроде тоже есть... P.S. По драйверу NTKEY2LX.COM см. предыдущую страницу.
_________________ iLavr
|
07 Jun 2018 12:00 |
|
|
Who is online |
Users browsing this forum: No registered users and 3 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|