LINUX.ORG.RU
ФорумTalks

[Специалистам по всему]rs-232 to keyboard

 


0

0

Вот у счастливых пользователей альтернативной системы есть такое решение данной проблемы.

Softwedge - to convert data format from RS232 serial type to Keyboard type The default RS232 settings of the scanner are 9600 baud, 7 data bits, 2 stop bits and space parity. In addition, the scanner uses ACK/NAK and XON/XOFF software handshaking, and the data transmission ends with both Carriage Return and Linefeed suffixes.

Каким образом можно реализовать такое под linux, или кто может знает решение этой головоломки.


Ответ на: комментарий от z0D5e8n7x_2

Если на пльцах то есть сканер штрих кода, подключеный через ком порт, (ну или USB с эмуляцией ком порта) сканер сам производит разбор кода и на /dev/ttyS0 выплевывает уже готовый набор цифр + символ перевода каретки. Для того что б сканер работал где угодно хоть в консоли хоть в... (подставить по вкусу), нужна программа которая слушает ком порт, и при появлении данных прикидывается клавиатурой всталяет в активное поле данные + enter (aka перревод каретки).

RaDiSt
() автор топика
Ответ на: комментарий от z0D5e8n7x_2

Таки мог бы написать не спрашивал бы.

RaDiSt
() автор топика

А не пробовал в xorg.conf подключить /dev/ttySN (куда воткнут сканер) в качестве клавиатуры? Если не заработает, можно посмотреть в сторону http://kbde.sourceforge.net/. Или написать простую программу, которая будет читать /dev/ttySN и генерировать события в uinput, которые затем будет ловить xorg =). Если завтра на работе будет время, попробую похитить у кого-нибудь сканер под r232 и написать небольшую программку...

Deleted
()
Ответ на: комментарий от Deleted

>Если завтра на работе будет время, попробую похитить у кого-нибудь сканер под r232 и написать небольшую программку...

Похвально, но почему то у меня есть предчуствие что это будет недо что то, просто там со сканером есть тонкости. Например он может передавать сразу два суффикса. и т.д. В вендо тулсе это все учтено. Как бе если можно будет хоть как то пользоватся это уже хорошо. Но все же..

RaDiSt
() автор топика
Ответ на: комментарий от phasma

Проблема в том что я ей не пользуюсь.

А вот если не будет решения под линукс, тогда на терминалах будет виндовс стоят. А меня напрягает, когда я из дома не могу зайти по ssh и порешать возникшие проблемы.

А вот ежли человек будет, что то писать то нахрена оно надо? на уровне лиж бы работало наверняка есть решение. А человек может другое что полезное сделает вместо велосипеда.

> ну так пользуйся вендой, какие проблемы ?

Когда уже детсадовцы повырастают. Вин - лин я тебе один умный веш скажу толко ти не обыжася. Есть сферы где надо: Чтоб работало и нии**т. А что там будет просто пофигу, ибо цена простоя для написания приблуды много выше стоимости софта уже готового.

А там при плановом сносе винд, ежли появится решение то будет заменено на линукс.

RaDiSt
() автор топика
Ответ на: комментарий от RaDiSt

> Когда уже детсадовцы повырастают. Вин - лин я тебе один умный веш скажу толко ти не обыжася. Есть сферы где надо: Чтоб работало и нии**т. А что там будет просто пофигу, ибо цена простоя для написания приблуды много выше стоимости софта уже готового.

олололо, школьнег который рассуждает про ssh будет мне рассказывать про интырпрайз ? :) Ты иди свой техникум сначала окончи, а потом уже в магазинчике быдлокодером подрабатывай.

phasma ★☆
()

Я тоже заинтересован в этом.
Работал с штрихкод сканерами, префиксы суффиксы роли не играют.
Как уже написали можно сделать программу которая слушает порт и генерирует события в uinput.

anonymous2 ★★★★★
()
Ответ на: комментарий от Deleted

Вот чей-то велосипед на эту тему: http://www.jikos.cz/~jbohac/goodies/typekeys.c

 * typekeys - uinput keypress generator
 * Translates data from stdin to uinput key press / key release 
 * sequences and feeds them to /dev/input/uinput
 *
 * Originaly intended to feed a RS232 barcode/rfid scanner output
 * into applications just as if the code was typed on the keyboard.
 *
 * It needs a config file defining what key codes to press in responce to
 * different input characters.

Deleted
()
Ответ на: комментарий от anonymous2

> говорит слишком большое сообщение, 8к.
> куда выложить?


cat source.c | bzip2 -9 | openssl base64

Результат - пости здесь.

Deleted
()
Ответ на: комментарий от Deleted

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
SXD/i7kinChIQpNIjQA=

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

когда очень много раз пытаюсь штрихкод считать в dmesg получаю это:

------------[ cut here ]------------
WARNING: at drivers/usb/serial/usb-serial.c:311 serial_write+0xa9/0xb0 [usbserial]()
Modules linked in: uinput isofs zlib_inflate pl2303 usbserial nfs lockd nfs_acl sunrpc ipv6 binfmt_misc usblp sg snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm sr_mod snd_timer cdrom ohci1394 snd_page_alloc snd_hwdep ieee1394 k8temp snd forcedeth amd74xx soundcore hwmon i2c_nforce2 i2c_core rtc dm_snapshot dm_zero dm_mirror dm_log dm_mod ide_disk sata_nv libata dock ide_pci_generic ide_core sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd usbcore
Pid: 8, comm: events/1 Tainted: G        W 2.6.27.22 #1
 [<c01259bf>] warn_on_slowpath+0x5f/0x90
 [<c011da48>] __wake_up+0x38/0x50
 [<c011d42d>] place_entity+0xad/0xf0
 [<c02b8951>] _spin_lock_irqsave+0x31/0x50
 [<f8a2f439>] serial_write+0xa9/0xb0 [usbserial]
 [<c011cf08>] __wake_up_common+0x48/0x70
 [<c0207aea>] tty_put_char+0x2a/0x40
 [<c02b8b39>] __reacquire_kernel_lock+0x49/0x50
 [<c020bbb9>] opost+0xa9/0x220
 [<c020c9ef>] n_tty_receive_buf+0x63f/0xeb0
 [<c011cc04>] source_load+0x24/0x50
 [<c01c5f92>] __next_cpu+0x12/0x30
 [<c011e95d>] find_busiest_group+0x12d/0x690
 [<c010214b>] __switch_to+0xab/0x160
 [<c02b8951>] _spin_lock_irqsave+0x31/0x50
 [<c02b8951>] _spin_lock_irqsave+0x31/0x50
 [<c020c3b0>] n_tty_receive_buf+0x0/0xeb0
 [<c0208587>] flush_to_ldisc+0xe7/0x1b0
 [<c02084a0>] flush_to_ldisc+0x0/0x1b0
 [<c0134ff5>] run_workqueue+0x85/0x120
 [<c01358f0>] worker_thread+0x0/0xd0
 [<c013596c>] worker_thread+0x7c/0xd0
 [<c0138450>] autoremove_wake_function+0x0/0x50
 [<c01358f0>] worker_thread+0x0/0xd0
 [<c0138132>] kthread+0x42/0x70
 [<c01380f0>] kthread+0x0/0x70
 [<c0103f87>] kernel_thread_helper+0x7/0x10
 =======================
---[ end trace 61979dfdddfdeda5 ]---

это чей баг? стоит это отправить разработчику usbserial?

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

все это тоже исправил, там флаги инициализации порта были не верны.

anonymous2 ★★★★★
()
Ответ на: комментарий от RaDiSt

>нужна программа которая слушает ком порт, и при появлении данных прикидывается клавиатурой всталяет в активное поле данные

Хрена себе. Где ты такой сканер взял-то? Есть сканеры USB HID, они работают без драйверов, начиная с 98-й, есть сканеры "в разрыв клавиатуры", но они обычно уже в готовых "современных" решенях для ПОСов какого-нибудь Wincor или IBM, и по понятным причинам драйверов не требуют.

Но вот ком-портовские сканеры? Я кончено знаю, что такие были и наверное есть.

Но самый простой способ в данной ситуации - пойти и купуть нормальный сканер. Благо стоят дешево и широко доступны.

Macil ★★★★★
()
Ответ на: комментарий от Macil

> Но вот ком-портовские сканеры? Я кончено знаю, что такие были и наверное есть.

Есть. Причём сканеры обычно универсальные - они в зависимости от настроек (задаваемых специальным штрих-кодом) и кабеля могут работать и как rs232, и как usb-hid, и ещё разными способами. А необходимы эти сканеры по той причине, что многий узкоспециализированный софт работает только через задницу^Wrs232.

Deleted
()
Ответ на: комментарий от Deleted

>они в зависимости от настроек (задаваемых специальным штрих-кодом)

Да, точно. К сканеру идет специальная книжечка (обычно в виде PDF'ки), в которой есть специальные щтрих-коды для его настройки, обычно достаточно извращенной.

Может быть топикстартеру покопать в этом направлении?

Macil ★★★★★
()
Ответ на: комментарий от RaDiSt

Я не знаю. Мне попадался один юсбовый штрихкод-сканер, так он, собака, из коробки был опознан как HID-клавиатура.

shimon ★★★★★
()
Ответ на: комментарий от Macil

> в которой есть специальные щтрих-коды для его настройки
ага два контроллера иметь на борту. использую дешевые ручные cypher 1000 с контроллером pl2303 и дорогие стационарные магеланы V2200. я копался - там такого нету.

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

> ага два контроллера иметь на борту. использую дешевые ручные cypher 1000 с контроллером pl2303 и дорогие стационарные магеланы V2200. я копался - там такого нету.

У меня сейчас Symbol LS2208:

http://www.motorola.com/business/v/index.jsp?vgnextoid=e37575489c075110VgnVCM...

...Multiple on-board interfaces ensure integration with a variety of host systems...

...Interfaces supported IBM, Keyboard wedge, RS-232, Synapse, USB, Wand...

Deleted
()
Ответ на: комментарий от Deleted

>Symbol LS2208

Отличный практически не убиваемый сканер, при заказе можно выбрать нужный тип кабеля.

capricorn20
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.