HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: BthSetMode на HP 2210
[Ответить]
Inok [12.01.2005 20:36] BthSetMode на HP 2210:
Не работает. Посмотрел по сетке, народ говорит, что проблема в том, что BT стэк на 2210 от Widcomm. И что делать? Как программно BT включить? Кто-нибудь знает? А то SDK от Widcomm ~ 1300 $ стоит.
Det [14.01.2005 17:18] Re: BthSetMode на HP 2210:
Inok писал(а):
Не работает. Посмотрел по сетке, народ говорит, что проблема в том, что BT стэк на 2210 от Widcomm. И что делать? Как программно BT включить? Кто-нибудь знает? А то SDK от Widcomm ~ 1300 $ стоит.
Это на самом деле так... Как вариант, можно рассмотреть соединение по виртуальному COM-порту, это конечно не так удобно для пользователя, но может стать единственной альтернативой. А что за задача, конкретно?
KAjFASH [15.01.2005 21:06] :
Смотрите код в WidcommConnect функции.// 0 -- off, 1 -- on, -1 -- does not exist
int CWirelessManager::GetWidcommStatus() {
HKEY hMainKey = NULL;
// Check connection existance
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Widcomm\\BtConfig\\General", 0, KEY_ALL_ACCESS, &hMainKey) == ERROR_SUCCESS) {
DWORD dwTmp = 0;
DWORD dwSize = 4;
DWORD dwRes = 0;
if ((RegQueryValueEx(hMainKey, L"StackMode", NULL, &dwRes, (BYTE*)&dwTmp, &dwSize) != ERROR_SUCCESS) || (dwRes != REG_DWORD)) {
dwTmp = 0;
}
RegCloseKey(hMainKey);
if (dwTmp == 0) return 0;
}else return -1;
return 1;
}
// _bConnect -- connect or disconnect
int CWirelessManager::WidcommConnect(bool _bConnect){
if (m_iIsBlueToothPresent != 1) { // not present
return -1;
}
if (_bConnect) { //connect
// Check connection existance
int iStatus = GetWidcommStatus();
if (iStatus == -1){
return -1;
}
HWND hWnd = ::FindWindow(L"WCE_BTTRAY", L"Bluetooth Console");
if (hWnd == NULL) return -2;
if (iStatus == 0) {
::SendMessage(hWnd, WM_COMMAND, 0x01002, 0);
int i=0;
for (; i<50; i++) { // Wait 5 seconds
if (GetWidcommStatus() == 1) break;
MSG tmp;
while(PeekMessage(&tmp, m_MainWindow, 0, 0x3FF, PM_REMOVE)) {
DispatchMessage(&tmp);
}
Sleep(100);
}
if (i > 35) return -3;
m_bWasBlueToothTurnedOn = true;
}
return 0;
} else { //disconnect
if (m_bWasBlueToothTurnedOn && (GetWidcommStatus() == 1)) {
HWND hWnd = ::FindWindow(L"WCE_BTTRAY", L"Bluetooth Console");
if (hWnd != NULL) ::SendMessage(hWnd, WM_COMMAND, 0x01001, 0);
}
m_bWasBlueToothTurnedOn = false;
m_hBTWnd = NULL;
return 0;
}
return 0;
}
Inok [26.01.2005 13:44] :
Спаибо, а что такое WidcommConnect? Где именно это узреть можно?
Inok [26.01.2005 13:52] :
2 Det
Решил написать для развлечения и пущего удобства программулю, которая устанавливает dialup соединение по GPRS. Сделать на Ras - функциях: RasDial и т.д. Саму программулю вынести на Today, чтобы в сетку ходить можно было по одному тычку в экран. Очевидно, такая программуля ДОЛЖНА включать BT сама, или опционально, по настройке. Вот, собственно, и вся задачка. Программулю я мог бы кинуть в каталог этого сайта. Бесплатно, естественно
.
Метод, который предложил KAjFASH, - просто убойный, мне даже в голову как-то не приходило
. Спасибо, ему еще раз.
[Ответить]