Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Поимка и обрабботка событий своими руками)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Поимка и обрабботка событий своими руками)
Имя
Сообщение << Старые топики   Новые топики >>
Поимка и обрабботка событий своими руками) - 2009-07-11 00:12:31.856666   
Ermordung

Сообщений: 7
Оценки: 0
Присоединился: 2009-07-10 13:59:07.730000
Хочу подробно рассмотреть вопрос:
Как поймать события например от переферийного устройства (нажатие боковой или офис кнопки на многокнопочной мыше ) сообщения о bluetooth и пр.
И самое главное как присвоить этому по поступлению этого события действие которое я хочу
готовые проги не предлогать , мне интересен сам процесс…
Post #: 1
RE: Поимка и обрабботка событий своими руками) - 2009-07-11 01:19:57.043333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
драйвер писать :)
Post #: 2
RE: Поимка и обрабботка событий своими руками) - 2009-07-11 04:59:41.036666   
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.
Post #: 3
RE: Поимка и обрабботка событий своими руками) - 2009-07-11 21:32:18.923333   
Ermordung

Сообщений: 7
Оценки: 0
Присоединился: 2009-07-10 13:59:07.730000
Пасиб Den ;), теперь знаю в какую сторону копать )
Post #: 4
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Поимка и обрабботка событий своими руками)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.