Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Альтернативные устройства ввода
 
 автор: час   (17.09.2008 в 10:50)   личное сообщение
 
 

Может кто поможет?
К еомпутеру, на котором Windows XP
подключена клавиатура и сканер (Панель управления, спецю возможности,Альтернативные устройства ввода)
Сканер получается улавливается виндой на равне с клавой..
И access-у по бараьану.
Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) реагирует одинаково.
всё равно - с клавы введено или со сканера., только со сканера это событие происходит 13 раз пока все символы не прибудут. Получается нет разницы откуда символ прибыл, а для меня есть разница и для программы есть разница - как её вычленить ? с чем отождесвить?

Как бы мне отличить с какого устройства идут данные?
Есть у кого нибудь на этот счёт соображения?

  Ответить  
 
 автор: час   (17.09.2008 в 19:45)   личное сообщение
 
 

Будьте добры - посоучавствуйте....

  Ответить  
 
 автор: Lukas   (17.09.2008 в 19:57)   личное сообщение
 
 

Сочувствуем.

  Ответить  
 
 автор: час   (17.09.2008 в 20:05)   личное сообщение
 
 

я просил посоучавствовать
не ну выкрутиться мохно всегда...
можно читать 12 символов подряд и если 13 ый является контролбной суммой 12ти предыдущих - стало быть это был штрихкод.
Но можно видимо всё таки как то логические усройства по номерам разделять или по какому id _
Но,я об этом даже не знаю где смотреть...........

  Ответить  
 
 автор: KrukVN   (17.09.2008 в 23:19)   личное сообщение
 
 

сканера нет под рукой - проверить не могу
но может попробовать спросить у 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

честно говоря удивлюсь если это сработает, но проверить наверное стоит

  Ответить  
 
 автор: час   (18.09.2008 в 14:00)   личное сообщение
 
 

Спасибо большое !!!
БУМ эскреминтировать с этой функцией.........
У меня сканер под рукой.
Результаты отпишу........
Получаеся пока дополнительное поле клавиатуры - это "не клава"
А основное поле (верхние цифры ) - "клава"

  Ответить  
 
 автор: час   (19.09.2008 в 20:32)   личное сообщение
 
 

Эта змея - сканер маскируется под клаву - 100%
Дурит комп и access = считают его клавой.
Он последовательно кидает цифирки и завершает всю эту комбинацию Enter - ом .
Вот у меня друг был - тоже учёный у него 3 класса образования, а он на клавиатуру жмёт - его нажатие не отличишь от настоящего.!!!!!!!!

  Ответить  
 
 автор: KrukVN   (19.09.2008 в 22:36)   личное сообщение
 
 

видно сканер имитирует нажатие клавиш при помощи SetKeyboardState и/или keybd_event

в таком случае... далее неуверенным голосом: копать нужно еще глубже и может даже в сторону перехвата API функций. вот статейка на эту тему: http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml

  Ответить  
 
 автор: Силыч   (19.09.2008 в 23:19)   личное сообщение
 
 

чё вы усложняете, не пойму?
считывай в скрытый или в явный контрол :) со сканера....

да и инфы куча :)
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/

  Ответить  
 
 автор: час   (20.09.2008 в 09:30)   личное сообщение
 
 

Спасибо, пойду покопаю, может нарою!!!
Дело в том, что я хотел воспользоваться наипростейшим способом подключения, (без применения драйверов)
воткнул сканер в com порт? поставил галочку альтернативные и всё можешь работать.
Но возникла проблемка как различить откуда ввод данных поступает от какого из источников - альтер или клава???

  Ответить  
 
 автор: Силыч   (20.09.2008 в 11:23)   личное сообщение
 
 

мы, когда работали с торговым оборудованием, сканер втыкали в разъем клавиатуры и считвали данные с него в контрол. все! никаких проблем не было. ничего различать не надо. где то лежат старые коды проектов тех лет.... вот еще есть
http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx

  Ответить  
 
 автор: час   (20.09.2008 в 11:32)   личное сообщение
 
 

Совершенно верно
У меня один контрол - поле ввода данных.
Всё прекрасно работает.
Только когда вводится информ. со сканера идёт длинная череда цифр,
затем после того как она закончиться я естесно сразу проверяю не 14 ли знаков
, так как это поле ещё и для ввода сумм от покупателя и там автоматом разделительная точка ставиться. 12345678952,14
вот второе неудобство.
если бы на момент ввода я бы уже знал что это сканер инфу толкает, я б её в отдельное место сложил и работал с эти штрихкодом, находя по нему товар, проверяя его контрольную сумму и т.д. в фоновом режиме.
А при вводе данных с клавы отображение данных шло на экран сразу .
Вот потому то мне и хотелось бы узнать от какого источника ввода данных эти данные поступили.
1. от стандартной клавы.
2. от альтернативного источника ввода данных.
Вот такая задачка...........

  Ответить  
 
 автор: Силыч   (20.09.2008 в 15:08)   личное сообщение
 
 

вот еще по твоему вопросу обсуждение
много дельных советов
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
удачи

  Ответить  
 
 автор: KrukVN   (20.09.2008 в 17:06)   личное сообщение
 
 


чё вы усложняете, не пойму?  
...
у нас, еще в access 2.0 была своя DLL, на сях писанная...

это кто еще усложняет

  Ответить  
 
 автор: час   (20.09.2008 в 18:00)   личное сообщение
 
 

Ндааааа................

  Ответить  
 
 автор: час   (20.09.2008 в 19:44)   личное сообщение
 
 

Перехват API-функций в Windows

  Ответить  
 
 автор: KrukVN   (21.09.2008 в 00:24)   личное сообщение
 
 

Теоретически ничего сложного нет: следим за опр. процессом и перехватываем его обращения к опр. API функциям. Но это теоретически :) А практически нуна писать dll и жел-но на сях. Вон Силыч тож писал чегось, но потерял исходники – хитрый :)

  Ответить  
 
 автор: час   (21.09.2008 в 15:12)   личное сообщение
 
 

Видимо придётся вернутся к драйверу сканера и спользовать его в работе со сканером.
Но тут другая проблема - постоянно необходимо следить за состоянием порта - нет ли там движения........ ..

  Ответить  
 
 автор: час   (23.09.2008 в 19:32)   личное сообщение
 
 

  Ответить  
 
 автор: Lukas   (23.09.2008 в 19:37)   личное сообщение
 
 

Может это чем-то поможет?
http://msa.dimsign.ru/index.php?type=103&urok=56

  Ответить  
 
 автор: Lukas   (23.09.2008 в 19:50)   личное сообщение
 
 

Или это:
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&#5665282

  Ответить  
 
 автор: час   (24.09.2008 в 10:48)   личное сообщение
 
 

Спасибо! Lukas - пиду гляну

  Ответить  
 
 автор: час   (24.09.2008 в 10:49)   личное сообщение
 
 

Это я уже перетряхивал - там с использованием таймера.
Я делал - всё работает.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList