Врізати навігатор програмна частина

Вирішив встановити навігатор в панель машини. Навігатор звичайний Explay PN930. Хороший навігатор на якісних комплектуючих стабільно працюючий, тому вибір припав на нього.
Для того, що б автоматизувати роботу девайса, тобто змусити його автоматично включатися-відключатися його потрібно трохи "допив" як програмно, так і за допомогою паяльника.

Платформа навігатора Windows CE6.0.
завдання; прибрати нафіг все зайве, при подачі живлення включається відразу навител 7.5, при знятті харчування - засинає.

На сайті 4пна є багато описів програмних доопрацювань, я роблю ось такий варіант:

Підключаю навігатор до комп'ютера, заміняю виконуваний файл навігації NaviOne.exe на на ТоталКомандер, перейменувавши його назад на NaviOne.exe Після цього перевантажую навігатор і запускаю навігацію. Природно замість навігації включається файловий менеджер. Потрібно залесть до реєстру. Для того щоб це зробити потрібно підключити плагін, закинувши попередньо в тугіше директорію, де відбувається заміна файл REGISTRY.TFX. Заходимо до реєстру, знаходимо гілку \\ Plugins \ REGISTRY \ HKLM \ INIT В цьому розділі знаходяться бібліотеки і додатки (сервіси), які запускаються при старті навігатора. Детальні описи є на 4PNA дот ком. У розділі Launch70 у мене знаходився виконуваний файл оболонки навігатора GPS.exe. Замінюємо значення на Explorer.exe. Далі в файлменеджер заходимо в папку Windows, знаходимо там Explorer.exe і запускаємо його. З'явиться робочий стіл з кнопкою Пуск (прапорець). Жмякайте на прапорець і відводимо навігатор в сон (Suspend). Далі включаємо його кнопкою і після включення ресета. Дана маніпуляція потрібна для збереження змін в реєстрі. Після ресета навігатор включається зі стандартним робочим столом. Заходимо в панель управління і крутимо необхідні настройки (я наприклад вимкнув усі звуки)

Все, штатна оболонка вимкнена. При цьому вилазить косяк: перестає працювати кнопка включення, тому що штатна оболонка виключена.На насправді кнопка працює, після натискання через двадцять секунд навігатор різко вимикається (не засинає).

Допоможе нам у цьому прога MortScript, яка дозволяє накидав текст алгоритму програми легко виконати його.

Копіюємо MortScript на внутрішню флеш-пам'ять і запускаємо його. при цьому виконуваний файл реєструється в реєстрі і все готово для виконання скриптів.

Щоб автоматично запускався скрипт я зробив наступне:

лізу знову в файловий менеджер, залазити в реєстр по шляху в розділ \\\ REGISTRY \ HKLM \ System \ Explorer \ Shell Folders \ знаходимо там строковий параметр StartUp і міняємо значення вказавши флеш пам'ять. У мене це \ ResidentFlash \ StartUp
Зберігаємося, засипаємо, включаємо, ресета. тепер якщо зайти на флешку \ ResidentFlash, то там побачимо папку автозапуску StartUp. Все що в ній знаходиться буде автоматично запускатися. за замовчуванням автозапуск знаходиться в папці Windows, але так як ця папка тільки для читання автозапуск там не працює. Перемістивши на флешку проблема вирішується.

Створюємо необхідний скрипт. У мене він такий:

Run ( "\ ResidentFlash \ NaviOne \ NaviOne.exe") запускаємо навігацію
Kill ( "\ windows \ explorer.exe") вбиваємо експлорер
While (1 = 1) почала нескінченного циклу
bool = ExternalPowered () пишемо в змінну стан акумулятор-мережу
sleep (100) затримка 0.1 секунда в циклі
If (bool = 0) якщо пропало харчування
sleep (3000) чекаємо три секунди
bool = ExternalPowered () пишемо в змінну стан акумулятор-мережу
If (bool = 0) якщо все одно харчування немає через три секунди
PowerOff переводимо в сплячку
EndIf кінець умови "якщо все одно харчування немає через три секунди"
else якщо живлення від мережі є те:
bool = ProcExists ( "\ ResidentFlash \ NaviOne \ NaviOne.exe") перевіряємо, чи працює навігація
If (bool = 0) якщо немає навігацію вимкнули (навител закрили), то
sleep (100) чекаємо 0.1 секунду
bool = ProcExists ( "\ ResidentFlash \ tc.exe") дивимося, чи запущений тотал командер
If (bool = 0) якщо не запущено тотал командер то
Run ( "\ ResidentFlash \ tc.exe") то запускаємо тотал командер
EndIf кінець умови »не запущений тотал командер"
EndIf кінець умови "Навітел закрили"
EndIf кінець умови "якщо пропало харчування"
EndWhile кінець циклу, йде в початок циклу

Створюємо блокнот, пишемо туди скрипт, викидаємо весь російський текст, зберігаємо його з будь-якою назвою з розширенням .mskr (наприклад autorun.mskr) і поміщаємо в папку автозапуску StartUp

Все, алгоритм готовий.

Навігатор вимкнений. подали харчування, натиснули кнопку включення (автоматизацію включення кнопки в подальшому потрібно зробити паяльником, поки натискаємо самі) включається навігатор, запускається експлорер, потім експлорер закривається і запускається навител. Якщо харчування пропало, навігатор чекає три секунди, перевіряє знову наявність харчування, якщо його немає - то засипаємо. Затримка і повторна перевірка потрібна, що б навігатор не засинав під час роботи стартера машини. Якщо навител закривається з меню, то після закриття Навітела відкривається тотал командер.

Взагалі алгоритм сирої, наприклад немає обробки закриття самого тотал командер - навігатор просто перестане реагувати. Писав його на коліні стилусом по пам'яті в машині, потім дороблю. У самого MortScripta є російська документація з докладним описом.

Якщо підключити навігатор до комп'ютера, то замість навігації запуститься робочий стіл експлорера.

Якщо подати просто харчування, то включається навігація зі скриптом.

Про автовключение навігатора напишу наступного разу.

А картинок то нету)