|
|
|
| Может кто поможет?
К еомпутеру, на котором Windows XP
подключена клавиатура и сканер (Панель управления, спецю возможности,Альтернативные устройства ввода)
Сканер получается улавливается виндой на равне с клавой..
И access-у по бараьану.
Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) реагирует одинаково.
всё равно - с клавы введено или со сканера., только со сканера это событие происходит 13 раз пока все символы не прибудут. Получается нет разницы откуда символ прибыл, а для меня есть разница и для программы есть разница - как её вычленить ? с чем отождесвить?
Как бы мне отличить с какого устройства идут данные?
Есть у кого нибудь на этот счёт соображения? | |
|
| |
|
|
|
| Будьте добры - посоучавствуйте.... | |
|
| |
|
|
|
| Сочувствуем. | |
|
| |
|
|
|
| я просил посоучавствовать
не ну выкрутиться мохно всегда...
можно читать 12 символов подряд и если 13 ый является контролбной суммой 12ти предыдущих - стало быть это был штрихкод.
Но можно видимо всё таки как то логические усройства по номерам разделять или по какому id _
Но,я об этом даже не знаю где смотреть........... | |
|
| |
|
|
|
| сканера нет под рукой - проверить не могу
но может попробовать спросить у GetKeyState, какая клавиша нажата и сравнить ее с KeyCode:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Sub d1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim gks As Integer
gks = GetKeyState(KeyCode)
If (-127 = gks) Or (-128 = gks) Then
Me.Caption = "клава"
Else
Me.Caption = "не клава"
End If
End Sub
|
честно говоря удивлюсь если это сработает, но проверить наверное стоит | |
|
| |
|
|
|
| Спасибо большое !!!
БУМ эскреминтировать с этой функцией.........
У меня сканер под рукой.
Результаты отпишу........
Получаеся пока дополнительное поле клавиатуры - это "не клава"
А основное поле (верхние цифры ) - "клава" | |
|
| |
|
|
|
| Эта змея - сканер маскируется под клаву - 100%
Дурит комп и access = считают его клавой.
Он последовательно кидает цифирки и завершает всю эту комбинацию Enter - ом .
Вот у меня друг был - тоже учёный у него 3 класса образования, а он на клавиатуру жмёт - его нажатие не отличишь от настоящего.!!!!!!!! | |
|
| |
|
|
|
| видно сканер имитирует нажатие клавиш при помощи SetKeyboardState и/или keybd_event
в таком случае... далее неуверенным голосом: копать нужно еще глубже и может даже в сторону перехвата API функций. вот статейка на эту тему: http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml
| |
|
| |
|
|
|
| чё вы усложняете, не пойму?
считывай в скрытый или в явный контрол :) со сканера....
да и инфы куча :)
http://www.sql.ru/forum/actualthread.aspx?tid=239540
http://www.atol.ru/products/programs/trade-work/driver/driver-scaner/
Драйвер является бесплатным при работе со сканерами штрих-кода, ридерами магнитных карт, механическими ключами.
http://mc-computing.com/languages/SerialIO.htm
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/57c7da73-dc92-4020-a681-15778aacbc0c/
| |
|
| |
|
|
|
| Спасибо, пойду покопаю, может нарою!!!
Дело в том, что я хотел воспользоваться наипростейшим способом подключения, (без применения драйверов)
воткнул сканер в com порт? поставил галочку альтернативные и всё можешь работать.
Но возникла проблемка как различить откуда ввод данных поступает от какого из источников - альтер или клава??? | |
|
| |
|
|
|
| мы, когда работали с торговым оборудованием, сканер втыкали в разъем клавиатуры и считвали данные с него в контрол. все! никаких проблем не было. ничего различать не надо. где то лежат старые коды проектов тех лет.... вот еще есть
http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx | |
|
| |
|
|
|
| Совершенно верно
У меня один контрол - поле ввода данных.
Всё прекрасно работает.
Только когда вводится информ. со сканера идёт длинная череда цифр,
затем после того как она закончиться я естесно сразу проверяю не 14 ли знаков
, так как это поле ещё и для ввода сумм от покупателя и там автоматом разделительная точка ставиться. 12345678952,14
вот второе неудобство.
если бы на момент ввода я бы уже знал что это сканер инфу толкает, я б её в отдельное место сложил и работал с эти штрихкодом, находя по нему товар, проверяя его контрольную сумму и т.д. в фоновом режиме.
А при вводе данных с клавы отображение данных шло на экран сразу .
Вот потому то мне и хотелось бы узнать от какого источника ввода данных эти данные поступили.
1. от стандартной клавы.
2. от альтернативного источника ввода данных.
Вот такая задачка........... | |
|
| |
|
|
|
| вот еще по твоему вопросу обсуждение
много дельных советов
http://forum.ru-board.com/topic.cgi?forum=33&topic=9070
у нас, еще в access 2.0 была своя DLL, на сях писанная... к сожалению у меня исходников нет :(
тебе надо сканировать компорт и ловить оттужа нужную последовательность, разбирать её и дальше распоряжаться на свое усмотрение. значить задача сводится к тому, чтобы ты научился работать с компортом :) в дальнейших проектах я работал с компортами через ActiveX или DLL, которые поставлялись производителями устройств, ЭККА, КПК....
Общая идеология работы с RS-232 в системе Windows
http://www.kb.mista.ru/article.php?id=77&edition=1
http://web.ssmu.ru/er/player/rs232.shtml
http://msdn.microsoft.com/en-us/library/aa363140(VS.85).aspx
удачи | |
|
| |
|
|
|
|
чё вы усложняете, не пойму?
...
у нас, еще в access 2.0 была своя DLL, на сях писанная...
|
это кто еще усложняет | |
|
| |
|
|
|
|
| Перехват API-функций в Windows | |
|
| |
|
|
|
| Теоретически ничего сложного нет: следим за опр. процессом и перехватываем его обращения к опр. API функциям. Но это теоретически :) А практически нуна писать dll и жел-но на сях. Вон Силыч тож писал чегось, но потерял исходники – хитрый :) | |
|
| |
|
|
|
| Видимо придётся вернутся к драйверу сканера и спользовать его в работе со сканером.
Но тут другая проблема - постоянно необходимо следить за состоянием порта - нет ли там движения........ .. | |
|
| |
|
|
|
|
| Может это чем-то поможет?
http://msa.dimsign.ru/index.php?type=103&urok=56 | |
|
| |
|
|
|
| Или это:
http://forum.sql.ru/forum/actualthread.aspx?tid=243281&hl=%f1%ea%e0%ed%e5%f0+%f8%f2%f0%e8%f5%ea%ee%e4%e0
http://forum.sql.ru/forum/actualthread.aspx?tid=556612&pg=1&hl=%f1%ea%e0%ed%e5%f0+%f8%f2%f0%e8%f5%ea%ee%e4%e0� | |
|
| |
|
|
|
| Спасибо! Lukas - пиду гляну | |
|
| |
|
|
|
| Это я уже перетряхивал - там с использованием таймера.
Я делал - всё работает. | |
|
| |