nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 12:35



Reply to topic  [ 50 posts ]  Go to page Previous  1, 2, 3, 4  Next
Подключение PS/2 клавиатуры через COM порт 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
незнаю как эта клава была подключена к линуксовому серваку...

Вариантов особых нет - через COM порт. :mrgreen:
Странно, что я не нахожу информации по ним, или гуглю не так, или умный гугл меня не понимает...


P.S. Хотя я глянул - по заказу может быть любой интефейс по желанию заказчика.

P.P.S. Вот здесь, кстати, есть какой-то фришный софт:
Free RS-232 to keyboard software

_________________
iLavr


20 Nov 2016 10:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Прямо очень странное дело! :o
Весь интернет только и занят тем, что делает и продает переходники для клавиатур:
PS/2 -> RS-232
А поскольку RS-232 отжил своё, то и переходники RS-232 -> USB .

А реальную ASCII Serial Keyboard я увидел только у одного джентльмена - он это своё
старьё очень любит и не расстался с ним! :ewink:
http://projects.worsleyassociates.com/SerialKeyboard/index.html

Image

Еще пару штук видел на Е-бее, но там непонятно что...

_________________
iLavr


20 Nov 2016 14:50
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
А почему такой клавиатуре просто не эмулировать какой-нибудь терминал? Например, VT-100. Очень стандартное решение, на мой взгляд, и очень поддержанное программным обеспечением.


20 Nov 2016 23:48
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
VituZz wrote:
А почему такой клавиатуре просто не эмулировать какой-нибудь терминал? Например, VT-100.

Виталий, так я и хочу это узнать- какой стандартный протокол используют Serial-клавиатуры, но нигде не могу пока это узнать... :osad:
Понятное дело, что я собираюсь подключать её к Windows-98(ХР), как рассказывал в этом топике.
Значит они должны друг друга как-то понимать...

_________________
iLavr


21 Nov 2016 05:09
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Судя по тому, что пишут тут: http://hiprog.com/forum/read.php?id_for ... theme=3859
...там просто ASCII подают на вход. А дальше крутитесь аки хотитесь ;)


21 Nov 2016 06:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
...там просто ASCII подают на вход. А дальше крутитесь аки хотитесь ;)

Ну мне что-то в это не верится, мы же увидели, что есть клавиатуры промышленного дизайна
с RS-232, а клавиатуру - воткнул и должно работать.

Вот даже пример выше это мужика с любимой старой serial-клавиатурой, она у него и Ctrl и
Alt отрабатывет как положено - просто слишком старА, чтобы взять её за образец...
Хотя... если ничего лучше не найду - её и возьму за образец, хоть подробно всё расписано. :-?

_________________
iLavr


21 Nov 2016 10:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Весь интернет только и занят тем, что делает и продает переходники для клавиатур: [b]PS/2 -> RS-232[/b...
Ага!... Оказывается, приличные ASCII Serial клавиатуры - просто дифицит! :o
Quote:
Because PC keyboards are so cheap and because of the difficulty of obtaining an ASCII keyboard it makes sense to use a PC keyboard with an 8-bit computer.
The difficulty with PC keyboards is that they produce serial scan codes which are synchronized with a clock signal. In addition the scan codes bear no relation to ASCII code...
Whereas an ASCII keyboard is completely different - it produces 7-bit parallel data that is not synchronized.

Using a PC style keyboard as an ASCII keyboard

_________________
iLavr


22 Nov 2016 17:41
Profile
Junior

Joined: 06 Jun 2018 04:13
Posts: 5
Reply with quote
Lavr wrote:
Под DOS - я понимаю, как это сделать... а вот под Вендой - "меня терзают смутные сомнения..." :-?

Подскажите, а как всетаки подключить rs232 клавиатуру под DOS?

Пытаюсь переделать клавиатуру Palm portable keyboard под rs232 (она кстати и так работает с кпк palm, по rs232), для подключения к старинному кпк HP 200lx


06 Jun 2018 04:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
be3 wrote:
Lavr wrote:
Под DOS - я понимаю, как это сделать... а вот под Вендой - "меня терзают смутные сомнения..." :-?
Подскажите, а как всетаки подключить rs232 клавиатуру под DOS?

Извините, вот под DOS сейчас никак не подскажу... :(

Материалы я эти гуглил довольно давно, и под DOS мне даже попробовать не пришлось.
Хорошо это получилось нативными средствами Win98 - WinXP.

Под более старшими вендами это средство почему-то убрали, и нужна сторонняя утилита.

P.S. Чисто по памяти предполагаю, что под DOS прерывание клавиатуры надо заменить прерыванием от COM-порта,
возможно, с некоторыми доработками...

_________________
iLavr


06 Jun 2018 05:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
В общем, есть в природе такой драйвер для подключения Serial(RS-232) keyboard под DOS: cdrvkeyb.exe.
Quote:
The utility cdrvkeyb.exe is a simple keyboard buffer stuffer. Any data received from the specified serial port will be placed in the keyboard buffer. In effect, this allows both the serial port and the keyboard to control the computer.
COMM-DRV/Dos – High speed MS-DOS serial communications driver

и вроде бы как его дают скачать вот здесь (я сам не пробовал):

Download Dos Serial Port Driver

_________________
iLavr


06 Jun 2018 14:22
Profile
Junior

Joined: 06 Jun 2018 04:13
Posts: 5
Reply with quote
Lavr, спасибо :idea: за наводку, протестирую и отпишусь о результатах.


06 Jun 2018 17:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
be3 wrote:
Lavr, спасибо :idea: за наводку, протестирую и отпишусь о результатах.

Мне самому стало интересно, поскольку сам бы я сел писать драйвер под DOS на ассемблере... :wink:

_________________
iLavr


06 Jun 2018 17:51
Profile
Junior

Joined: 06 Jun 2018 04:13
Posts: 5
Reply with quote
Пока не смог найти это драйвер выше, поищу более детально (но скорее всего он платный + не оч. распространен и как следствие бесплатно не скачать).

Существует драйвер под DOS (c исходниками на ASM :exclaim: - NTKEY2LX.COM) от клавиатуры Apple Newton Keyboard, которая работает по rs232, возможно драйвер универсален, или его можно "отвязать" от особенностей работы Newton Keyboard. (драйвер прикрепил)
В ассемблере не разбираюсь, но буду пробовать все варианты :rotate: .

Второй вариант, это спаять адаптер "Переходник из PS/2 в RS232" прошивка которого, как раз написана под - Windows CE драйвер Newton Keyboard и под MS DOS использовать драйвер NTKEY2LX.COM.


Attachments:
File comment: hp 200lx ms dos Apple Newton Keyboard driver
NTKPAC05.ZIP [24.35 KiB]
Downloaded 442 times
07 Jun 2018 03:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
be3 wrote:
Пока не смог найти это драйвер выше, поищу более детально (но скорее всего он платный + не оч. распространен и как следствие бесплатно не скачать).
Да это понятно - время DOS давненько ушло... :osad:
И все эти утилиты скорее всего надо искать по страницам типа "Старый DOS" и спрашивать на
тематических форумах по старым компам...
Я, к сожалению, сейчас по своей работе занят, поэтому не могу активно вам помочь. :-?

Но если решите справиться с проблемой сами, я бы порекомендовал подсматривать в «Справочник
программиста персональных компьютеров типа IBM PC, XT и AT» автора Р. Джордейна - в нем хорошо
расписаны все эти вопросы под DOS.

Я скачал ваши материалы - если случится свободная минутка - тоже посмотрю, мне чисто интересно.


P.S. Посмотрел исходник сразу - там именно это и делают, что я и предполагал:
Lavr wrote:
под DOS прерывание клавиатуры надо заменить прерыванием от COM-порта,
возможно, с некоторыми доработками
Вот фрагмент кода, где вектор прерывания подменяют:
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
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Потратил я немного времени, чтобы посмотреть какую-либо техническую информацию по этим
самым клавиатурам с RS-232 интерфейсом: Palm portable keyboard и Apple Newton Keyboard...

Заинтересовало, поскольку по ASCII Serial keyboard я тут в первый заход ничего путного не нашел. :osad:
Теперь хоть знал - что конкретно искать, хотя задачу это сильно не облегчило - уходит эта информация,
ссылки битые, на других ссылках уже и информация другая... :-?

Но по Palm portable keyboard я некоторую техническую информацию нашел! :wink:
http://wb9kzy.com/palm.htm ; http://www.splorp.com/pdf/stowawayhwref.pdf
Attachment:
Palm Portable Keyboard.gif
Palm Portable Keyboard.gif [ 82.33 KiB | Viewed 10440 times ]

В мануале stowawayhwref.pdf расписаны особенности RS-232 интерфейса к Palm и приведена
таблица кодов: Key Code Matrix.
Attachment:
Key Code Matrix.gif
Key Code Matrix.gif [ 22.27 KiB | Viewed 10440 times ]

При взгляде на таблицу, возникает мысль, что Palm portable keyboard - это не ASCII Serial keyboard, и, возможно,
в драйвере придется сделать перекодировку либо в скан-коды, либо - сразу в ASCII-коды.

Насколько я успел посмотреть, в тексте драйвера NTKEY2LX.COM какая-то перекодировка вроде тоже есть...


P.S. По драйверу NTKEY2LX.COM см. предыдущую страницу.

_________________
iLavr


07 Jun 2018 12:00
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 50 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 23 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.