Работа с драйвером в Windows CE
От: PCI  
Дата: 24.07.06 06:46
Оценка:
Есть следующая проблема. Хочется управлять драйвером Windows CE напрямую, используя функцию DeviceIoControl, но вот возникли затруднения, я не знаю коды функции, используемых при вызове дрювера в Windows CE, и как правильно надо создавать фаил порта, к кот. буду обращаться. Если есть умные люди, просвятите!

24.07.06 18:22: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Работа с драйвером в Windows CE
От: _f_b_i_  
Дата: 25.07.06 07:30
Оценка:
Здравствуйте, PCI, Вы писали:

PCI>Есть следующая проблема. Хочется управлять драйвером Windows CE напрямую, используя функцию DeviceIoControl, но вот возникли затруднения, я не знаю коды функции, используемых при вызове дрювера в Windows CE, и как правильно надо создавать фаил порта, к кот. буду обращаться. Если есть умные люди, просвятите!


Более детально опиши задачу: каким драйвером хочешь управлять? какую задачу хочешь решить? и.т.д.
Re[2]: Работа с драйвером в Windows CE
От: PCI  
Дата: 25.07.06 08:48
Оценка:
Управлять необходимо портом COM1: (т.е.соответственно отвечающим за него дрювером)
Желательно выполнять все возможные действия, такие как формирование структуры DCB,отправка и прием байта и прочие остальные. (А вообще хорошо бы было бы узнать сами коды функций управления, кот. надо задавать в команде DeviceIoControl во втором параметре). Так же очень интерессует вопрос как можно отследить момент выдачи из сдвигового регистра последнего бита в отправляемом байте (линия Tx)на COM порте!!!!!!! или хотя бы как это реализовывается, когда мы ставим в структуре DCB dcb.fRtsControl = RTS_CONTROL_TOGGLE !!!!!!! т.к. в данном случае сигнал RTS будет активен только в момент передачи байта и ни ms больше( что мне в принципе и требуется)!!!
Re[3]: Работа с драйвером в Windows CE
От: _f_b_i_  
Дата: 25.07.06 08:59
Оценка:
Здравствуйте, PCI, Вы писали:

PCI>Управлять необходимо портом COM1: (т.е.соответственно отвечающим за него дрювером)

PCI>Желательно выполнять все возможные действия, такие как формирование структуры DCB,отправка и прием байта и прочие остальные. (А вообще хорошо бы было бы узнать сами коды функций управления, кот. надо задавать в команде DeviceIoControl во втором параметре). Так же очень интерессует вопрос как можно отследить момент выдачи из сдвигового регистра последнего бита в отправляемом байте (линия Tx)на COM порте!!!!!!! или хотя бы как это реализовывается, когда мы ставим в структуре DCB dcb.fRtsControl = RTS_CONTROL_TOGGLE !!!!!!! т.к. в данном случае сигнал RTS будет активен только в момент передачи байта и ни ms больше( что мне в принципе и требуется)!!!

IOCTL определены в файле PEGDSER.H который распространяется с Platform Builder. Советую отыскать и посмотреть как реализован драйвер COM порта, он в исходниках.

Если под рукой не окажется PB привожу содержимое файла:

#define FILE_DEVICE_SERIAL_PORT         0x0000001b

#define IOCTL_SERIAL_SET_BREAK_ON       CTL_CODE(FILE_DEVICE_SERIAL_PORT, 1,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_BREAK_OFF      CTL_CODE(FILE_DEVICE_SERIAL_PORT, 2,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_DTR            CTL_CODE(FILE_DEVICE_SERIAL_PORT, 3,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_CLR_DTR            CTL_CODE(FILE_DEVICE_SERIAL_PORT, 4,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_RTS            CTL_CODE(FILE_DEVICE_SERIAL_PORT, 5,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_CLR_RTS            CTL_CODE(FILE_DEVICE_SERIAL_PORT, 6,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_XOFF           CTL_CODE(FILE_DEVICE_SERIAL_PORT, 7,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_XON            CTL_CODE(FILE_DEVICE_SERIAL_PORT, 8,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_WAIT_MASK      CTL_CODE(FILE_DEVICE_SERIAL_PORT, 9,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_WAIT_MASK      CTL_CODE(FILE_DEVICE_SERIAL_PORT,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_WAIT_ON_MASK       CTL_CODE(FILE_DEVICE_SERIAL_PORT,11,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_COMMSTATUS     CTL_CODE(FILE_DEVICE_SERIAL_PORT,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_MODEMSTATUS    CTL_CODE(FILE_DEVICE_SERIAL_PORT,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_PROPERTIES     CTL_CODE(FILE_DEVICE_SERIAL_PORT,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_TIMEOUTS       CTL_CODE(FILE_DEVICE_SERIAL_PORT,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_TIMEOUTS       CTL_CODE(FILE_DEVICE_SERIAL_PORT,16,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_PURGE              CTL_CODE(FILE_DEVICE_SERIAL_PORT,17,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_QUEUE_SIZE     CTL_CODE(FILE_DEVICE_SERIAL_PORT,18,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_IMMEDIATE_CHAR     CTL_CODE(FILE_DEVICE_SERIAL_PORT,19,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_DCB        CTL_CODE(FILE_DEVICE_SERIAL_PORT,20,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_DCB        CTL_CODE(FILE_DEVICE_SERIAL_PORT,21,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_ENABLE_IR        CTL_CODE(FILE_DEVICE_SERIAL_PORT,22,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_DISABLE_IR        CTL_CODE(FILE_DEVICE_SERIAL_PORT,23,METHOD_BUFFERED,FILE_ANY_ACCESS)
//    Bluetooth serial IOCTLs are defined in bt_api.h. They are kept here to reserve the spot.
#define IOCTL_BLUETOOTH_GET_RFCOMM_CHANNEL    CTL_CODE(FILE_DEVICE_SERIAL_PORT,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_BLUETOOTH_GET_PEER_DEVICE     CTL_CODE(FILE_DEVICE_SERIAL_PORT,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
Re[4]: Работа с драйвером в Windows CE
От: PCI  
Дата: 25.07.06 11:26
Оценка:
Здравствуйте, _f_b_i_, Вы писали:

___>IOCTL определены в файле PEGDSER.H который распространяется с Platform Builder. Советую отыскать и посмотреть как реализован драйвер COM порта, он в исходниках.


___>Если под рукой не окажется PB привожу содержимое файла:




Все бы хорошо, но есть одно но, я пользуюсь eMbedded Visual C++ 3 ,а здесь ничего такого нет. Попытаюсь найти PB(если не ударит по карману), но если тебя не затруднит, можешь скинуть эти исходники мне на почту Kaa45@yandex.ru Буду признателен.
Re[5]: Работа с драйвером в Windows CE
От: _f_b_i_  
Дата: 25.07.06 11:49
Оценка:
Здравствуйте, PCI, Вы писали:

PCI>Здравствуйте, _f_b_i_, Вы писали:


___>>IOCTL определены в файле PEGDSER.H который распространяется с Platform Builder. Советую отыскать и посмотреть как реализован драйвер COM порта, он в исходниках.


___>>Если под рукой не окажется PB привожу содержимое файла:




PCI>Все бы хорошо, но есть одно но, я пользуюсь eMbedded Visual C++ 3 ,а здесь ничего такого нет. Попытаюсь найти PB(если не ударит по карману), но если тебя не затруднит, можешь скинуть эти исходники мне на почту Kaa45@yandex.ru Буду признателен.


PB — довольно дорогая игрушка... можно пропробовать скачать из e-mule например, но весит около 2 Гб.
Сейчас с собой примера нет, поищу дома и вышлю вечером.
Да и еще чтобы откомпилить драйвер, желательно иметь eMbedded Visual C++ 4.0.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.