tag:blogger.com,1999:blog-68273632805925329572024-02-08T08:24:51.703+02:00cat **/* | grep яAkshaalhttp://www.blogger.com/profile/05677582369584740657noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-6827363280592532957.post-277740139868048232008-08-12T00:22:00.001+03:002009-02-22T16:35:07.602+02:00N560Звук и кнопки на КПК после дождя плохо себя ведут. Сегодня решил с этой проблемой что-то сделать.<br /><ad2></ad2><br />Открывать КПК как-то стремно стало. Боюсь, что обратно я его соберу с еще большими повреждениями. Решил забить на встроенный динамик. При желании можно и наушники для громкой связи использовать задрав громкость до предела. Не выход конечно... А вот с клавиатурой все печальнее. Сначало я думал, что на каждое нажатие кнопки приходит два скан кода один за другим. И думал, что смогу отрезать второй, который приходит слишком рано. Благо перехват скан кодов уже реализован в LooxLight'е. А тут оказалось все куда печальнее. Там не два скан кода приходит. А один "одновременный". Как бы это описать. Ну вот PC клавиатуре там настоящие скан коды. А в клавиатуре КПК, там просто значение у которого каждый бит занчит нажатую кнопку. Значение состоит из двух слов, старшее для стрелочек, а младьшее для всех остальных кнопок. И вот я по логам LooxLight'а наблюдаю следующую картину:<br />2003.01.02 17:33:38.0000: 6f7dacca: 8f7ddf4c: Char <b>00040004</b>, cur=00000004, next=00000005, 8f7ddf4c, 8f7ddc64<br />И так на каждое нажатие. На любое нажатие левое слово = правое. В результате нажимаем стрелочку влево, а получаем и влево и еще какое-то нажатие. И наоборот. Короче хрен обьяснишь. Думаю это как-то завязано на то, что такие клавиатуры обычно реализуются через "матрицу" контактов или хз как и какие-то две ветки там замыкает. А может я и не прав. Сейчас сделаю временное решение, чтобы дисплей хоть разблокировать можно было, а потом буду думать...<br /><br /><b>Временное решение</b>:<br />Сравнивать коды клавиш таким образом, что fix(нажатой кнопки) == fix (образца):<pre><br />UINT fix (UINT x) {<br /> UINT y = (x & 0xFFFF) | (x >> 16);<br /> return y | (y << 16);<br />}<br /></pre><ad2></ad2>Akshaalhttp://www.blogger.com/profile/05677582369584740657noreply@blogger.com0tag:blogger.com,1999:blog-6827363280592532957.post-78816656216140404412006-12-14T23:52:00.001+02:002009-02-22T16:22:34.984+02:00Восстановление после чисткиЕсли вы обладатель КПК, то наверняка слышали про утилиты MemMaid или SKTools, а значит этот пост для вас. Если вы к тому-же не только слышали, но еще и пользуетесь, то это 100% для вас. Если вы не только пользуетесь одной из этих программ, но еще и по глупости полностью почистили Notification Queue и не знаете как заставить КПК работать - как раз об этом и пойдет речь.<ad></ad><br />1. Почему это проблема? Notification queue (очередь уведомления, NQ) говорит КПК какое действие необходимо выполнить когда какое-то событие произошло. Например, если вы включаете КПК, то это событие AppRunAtWakeup (или типа того). КПК не будет ничего делать по событиям, если вы почистили NQ. Самое главное, что вы не сможете даже приконнектится своим КПК к ПК с помощью обычных USB, IR, RS232. Это означает, что вы не сможете синхронизировать ваш КПК с ПК, а также не сможете его поэксплорить с вашего большого компьютера.<br /><br />2. Как я могу это вылечить? Простой путь - это восстановить состояние КПК из резервной копии. Очень хорошо иметь такую свежую копию :)))).<br /><br />3. У меня нет резервной копии... не совсем так... есть, но она древняя, что я могу сделать в этом случае? Вы можете сделать аппаратный сброс (Hard Reset, XР). Но все же лучше восстановится из бэкапа, даже если он у вас древний.<br /><br />4. Я не хочу делать ХР или восстанавливаться из резервной копии! Да, я тоже. Тогда мы должны добавить события в NQ вручную.<br /><br />5. Какие события я должен добавить? Чтобы узнать список событий вы можете: сделать бэкап, сделать ХР, установить SKTools и записать список событий из очереди уведомления, затем восстановится из бэкапа. Или вы можете найти список для вашего КПК в интернете. В моем случае, я посмотрел на КПК моей жены. У нее КПК почти такой же как у меня (у нее C550, у меня N560).<br /><br />6. Как добавить события в NQ? SKTools - лучшее что я видел для этих целей.<br /><br />7. Мне нужно добавить "\windows\repllog.exe AppRunAfterRndisFnDetected", но SKTools не имеет события "AppRunAfterRndisFnDetected"! Да! Это сейчас основная проблема. <br />Я потратил четыре дня, чтобы найти такую программу, которая бы позволяла мне добавить это событие. Но я не нашел. Не было такой программы. Поэтому я написал свою. Вот она: <a href="http://toril.ru/soft/akrndisadd.exe">http://toril.ru/soft/akrndisadd.exe</a>. Просто запустите ее на КПК. Она должна показать "True", если событие было успешно добавлено. <br /><br />8. Как я могу поместить эту программу на КПК, если я не могу посмотреть содержимое моего КПК с ПК, пока это событие не добавлю? Вы можете переместить программу с помощью Bluetooth, WIFI, MMC/SD/CF карты, инфракрасного порта или RS232 :).<br /><br />Исходники akrndisadd<br /><pre>#include "stdafx.h"<br />#include <windows.h><br />#include <commctrl.h><br />#include <notify.h><br /><br />int _tmain(int argc, _TCHAR* argv[])<br />{<br /> TCHAR *r = TEXT ("False");<br /><br /> // This API is deprecated. I know.<br /> if (CeRunAppAtEvent (TEXT("\\windows\\repllog.exe"), 14L)) {<br /> r = TEXT ("True");<br /> };<br /><br /> MessageBox (NULL, r, r, MB_OKCANCEL | MB_ICONEXCLAMATION);<br /> return 0;<br />}<br /></pre><ad2></ad2>Akshaalhttp://www.blogger.com/profile/05677582369584740657noreply@blogger.com0