DenCoder
Сообщений: 49
Оценки: 0
Присоединился: 2009-07-07 19:45:30.303333
|
Необязательно писать драйвер. События от периферийного устройства можно обрабатывать в оконной процедуре. Ловим сообщение WM_INPUT для тех устройств, которые зарегистрированы нами ф-цией RegisterRawInputDevices BOOL RegisterRawInputDevices( PCRAWINPUTDEVICE pRawInputDevices, //массив устройств UINT uiNumDevices, UINT cbSize ); Сообщения от Bluetooth можно через виртуальный COM-порт отлавливать. Самый простой для этого способ - поставить набор приложений с диска в комлпекте к Bluetooth-адаптеру и установить COM-порт. В этом случае для каждого Bluetooth-устройства может быть как свой порт, так и к одному порту могут подключаться несколько устройств. О назначении порта какому-то устройству можно считать в реестре Windows. Далее после открытия порта ф-цией CreateFile можно общаться с устройством через ф-ции ReadFile, WriteFile. Но можно также отвечать на сообщения от Bluetooth и посылать их, используя сокеты подобно протоколу TCP/IP. После того, как связали сокет bind с адресом или группой адресов, от которых ждем события, и поставили на прослушку ф-цией listen наш сокет, функцией select ожидаем события. Этими событиями могут быть - соединение, прием, передача или ошибки. Если соединений много, то лучше всего для каждого соединения при возникновении события создавать свой поток, после обработки данных и совершения какого-то действия уничтожать его. Реализаций может быть много, можно и не создавать каждый раз при новом событии и затем удалять, а передавать потоку который привязан к своему соединению каким либо образом сообщение, чтобы он совершил какие-то действия. Это можно реализовать так // Цикл обработки событий dwMessage = /*некоторое сообщение*/ SetEvent(hEvent); … // Код потока if(WaitForSingleObject(hEvent, dwTimeout) == WAIT_OBJECT_0) switch(dwMessage) { case MSG_BLUETOOTH_READ: … break; case MSG_BLUETOOTH_WRITE: … break; … } Принимаем данные ф-цией recv, передаем - send. Ну и так далее… Много информации о написании программ для Bluetooth на http://www.bluetooth.com.
|