nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 24 Jun 2018 10:41



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

Joined: 21 Oct 2009 09: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 11:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09: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 15:50
Profile
God
User avatar

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


21 Nov 2016 00:48
Profile
Maniac
User avatar

Joined: 13 Nov 2007 12:09
Posts: 230
Location: Ставрополь
Reply with quote
Lavr wrote:
А реальную ASCII Serial Keyboard я увидел только у одного джентльмена


Чур, я второй, со своим терминалом для Аюши ;)
Клава тут, http://www.qsl.net/rw6hrm/html/ascii_kbrd.htm ,
Тут расширенная схема, с кириллицей в альтернативной кодировке, http://www.qsl.net/rw6hrm/html/ascii_kbrd2.htm
Пара схем терминала тут, http://www.qsl.net/rw6hrm/html/terminal.htm (смотрим преобразователь с ASCII в последовательный выход, либо на ИР9, либо на КП1).
Всё это неплохо работает со стандартным СОМ-портом, ХРшка не жаловалась.


21 Nov 2016 01:40
Profile WWW
Supreme God
User avatar

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

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

_________________
iLavr


21 Nov 2016 06:09
Profile
God

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


21 Nov 2016 07:12
Profile
Supreme God
User avatar

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

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

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

_________________
iLavr


21 Nov 2016 11:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09: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 18:41
Profile
Junior

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

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

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


06 Jun 2018 05:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09: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 06:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09: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 15:22
Profile
Junior

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


06 Jun 2018 18:09
Profile
Supreme God
User avatar

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

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

_________________
iLavr


06 Jun 2018 18:51
Profile
Junior

Joined: 06 Jun 2018 05: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 5 times
07 Jun 2018 04:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09: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 08:58
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 37 posts ]  Go to page Previous  1, 2, 3  Next

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

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