Вход в Зоопарк ручных компьютеров
gps мониторинг, транспортная логистика, gps слежение
Таймер отключения подсветки по неактивности в Jornade
"Карманная" версия Базара

 
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК
Предыдущая тема :: Следующая тема  
Автор Сообщение
BEK

Гуру


Зарегистрирован: 19.01.2002
Сообщения: 376
Откуда: Москва

СообщениеДобавлено: Сб Май 25, 2002 0:07    Заголовок сообщения: Таймер отключения подсветки по неактивности в Jornade Ответить с цитатой

Переписываюсь с разработчиком Uniboard (Макцентровский драйвер для внешних клавиатур). Есть у этого драйвера дефектик - если установлено автоотключение подсветки через интервал неактивности (через Settings Windows CE), то события нажатия на клавиши внешней клавы не включают подсветку...
Код, использованный их программистом - такой:
Код:
PulseEvent(g_hBackLightChangeEvent); , где g_hBackLightChangeEvent=CreateEvent(NULL,FALSE,FALSE,_T("UserActiveEvent"));

И на Jornade 56X он не работает, а на других КПК - работает.
Может кто знает другой вариант, я искал, но ничего не нашел...

_________________
Acer N311, HP Jornada 568, Canon 40D
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vroma

Гость





СообщениеДобавлено: Вс Май 26, 2002 23:56    Заголовок сообщения: Ответить с цитатой

2 ВЕК:
Хочу уточнить вопрос.
Как я понял, Windows CE устанавливает именованный event "UserActiveEvent", когда в результате действия пользователя включается подсветка экрана. Программист из Макцентра "подключается" к этому объекту ядра (g_hBackLightChangeEvent=CreateEvent(NULL,FALSE,FALSE,_T("UserActiveEvent"))). Когда нажимается клавиша на внешней клавиатуре он в своем драйвере "пульсирует" event "UserActiveEvent" (PulseEvent(g_hBackLightChangeEvent)). Так ?

По логике вещей вместо PulseEvent() должна использоваться SetEvent(). Потом event "сбросит" "автоотключение подсветки через интервал неактивности". Может в этом причина (драйвер подсветки "не успевает" обработать event до того, как он снова устанавливается).

Еще вопрос: а g_hBackLightChangeEvent=CreateEvent(NULL,FALSE,FALSE,_T("UserActiveEvent")) какой возвращает результат (GetLastError()) - создается новый event или дублируется существующий ("UserActiveEvent") ? Проверь, может в Jornade 56X нету "UserActiveEvent".
Вернуться к началу
BEK

Гуру


Зарегистрирован: 19.01.2002
Сообщения: 376
Откуда: Москва

СообщениеДобавлено: Пн Май 27, 2002 10:39    Заголовок сообщения: Ответить с цитатой

Основная беда - реализация функции управления подсветкой - OEM specific... MS не документирует это! А вот как и что посмотреть на уровне драйвера - я не знаю. При нажатии на экран или обычную кнопку таймер отключения подсветки сбрасывается, очевидно генерится событие. Какое?
_________________
Acer N311, HP Jornada 568, Canon 40D
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mobmax

Маститый писатель


Зарегистрирован: 07.10.2001
Сообщения: 233

СообщениеДобавлено: Чт Май 30, 2002 20:57    Заголовок сообщения: Ответить с цитатой

Мой опыт работы с разными OEM компаниями показывает, что дизайнов драйверов и OAL на различных устройствах всего несколько, да и то почти все они произведены 3-4 группами разработчиков. Что касается технических решений, например то о котором идет речь, то их разнообразия вообще практически нет - все дерут reference design, который получают от Microsoft.
Одним словом решение проблемы Вы сами уже описали в вопросе, только имя события надо заменить на "TouchEvent" и все будет классно работать на HP Jornada 56x... Вот и весь фокус! Cool

_________________
Best regards,
Mobile Max
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AE

Гуру


Зарегистрирован: 21.08.2001
Сообщения: 1981
Откуда: Moscow, Russia

СообщениеДобавлено: Сб Июн 01, 2002 11:33    Заголовок сообщения: Ответить с цитатой

Вот, кстати, относительно OEM-specific и even'ов: очень давно интересует, как можно определить текущий уровень подсветки. На вопрос "как включить/выключить подсветку" ответ есть, а вот как запросить - нет... Доступна ли такая информация, или она "indoor use only" или вообще исключительно OEM-специфик и не оговаривается даже by MS?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
BEK

Гуру


Зарегистрирован: 19.01.2002
Сообщения: 376
Откуда: Москва

СообщениеДобавлено: Вс Июн 02, 2002 1:01    Заголовок сообщения: Ответить с цитатой

Вот что ответили HP (оказывается, надо было в нужном месте спросить - всего через недельку!)
Не совсем по теме, но полезно и решает некоторые проблемы!
Код:
*====================================================================================
Sample code to control the backlight on a HP Jornada 56x.

This code is released as is without any warranties what so ever. It is the responsibility
of the user of this code sample to test his code for proper quality.

In particular, the sample code for setting the backlight on or off simply does that without
any consideration for the current power settings of the PocketPC. Therefore, the developer
should implement and test according to the various power management configurations and
relevant timeouts.
=====================================================================================*/
#include "stdafx.h"
#include "winioctl.h"

/*
* OEM (HP) specific IOCTL start from here.
*/
#define HP_IOCTL_BASE 0x0000C000

#define IOCTL_DISP_SET_BACKLIGHT CTL_CODE((HP_IOCTL_BASE|FILE_DEVICE_VIDEO),3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISP_GET_BACKLIGHT CTL_CODE((HP_IOCTL_BASE|FILE_DEVICE_VIDEO),4, METHOD_BUFFERED, FILE_ANY_ACCESS)


/*
* utility sample function to get/set backlight settings.
*
* dwFunc is either IOCTL_DISP_SET_BACKLIGHT or IOCTL_DISP_GET_BACKLIGHT
* (*dwValue) is a boolean (turn on/off) when the SET function is used.
* (*dwValue) is a boolean and returns the state of the backlight when GET is used.
* in addition, the GET function returns the state of the battery status flag.
*
* ExtEscape() function is a WinCE function for passing OEM specific operations to the
* display driver.
*/
DWORD HPDisplayBacklight(DWORD dwFunc, DWORD *dwValue)
{
HDC hDC;
DWORD dwTemp;

hDC = GetDC(NULL);

switch (dwFunc)
{


case IOCTL_DISP_SET_BACKLIGHT:
ExtEscape(hDC, IOCTL_DISP_SET_BACKLIGHT, sizeof(DWORD), (LPCSTR)dwValue, 0, NULL);
break;


case IOCTL_DISP_GET_BACKLIGHT:
ExtEscape(hDC, IOCTL_DISP_GET_BACKLIGHT, sizeof(DWORD), (LPCSTR)&dwTemp, sizeof(DWORD), (LPSTR)dwValue);
return dwTemp;

default:
break;
}

ReleaseDC(NULL, hDC);

return 0;


 


_________________
Acer N311, HP Jornada 568, Canon 40D
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК Часовой пояс: GMT - 10
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме



Форумы Handy.ru 


Powered by phpBB © 2001 phpBB Group