Протестировав предложенный скрипт, я тут сделал некоторые выводы.
1) Гораздо удобнее применять не VSPE, а vspd. Потому что vspd не требует запуска всякий раз, когда нам нужно получить порты. Однажды настроили - и всё. Это упрощает и скрипт тоже. К тому же не требуется отдельный файл конфигурации.
2) Обойтись без GPSGate никак не возможно, потому что нужно выполнить уже известные противоречивые требования: на момент запуска эмулятора порт, с которым эмулятор работает, должен существовать, но данных на нём быть не должно. Таким образом, нужно иметь в системе заранее сформированную пару виртуальных (но считающихся физическими) портов, один из которых задействован для соединения с эмулятором, второй является выходом GPSGate. Если при старте эмулятора GPSGate закрыт, то на второй порт ничего не передаётся, а первый порт существует, что и требуется.
3) Скрипт я немного модифицировал. Из ini-файла убрал параметры VSPE и задержки. Смысла через ini выставлять задержки я не вижу, хотя мне пришлось некоторые временнЫе параметры изменить, но они и не были записаны в ini. Добавил параметр "Горячая клавиша Навитела". Также я изменил способ закрытия процессов, не нужных в данный момент, так как предложенный метод у меня приводил к ошибкам.
4) В Андроиде есть фича: назначение на приложения клавиш быстрого доступа. Нажимать эти клавиши необходимо совместно с клавишей "Поиск", каковой в эмуляторе является клавиша F5. Если на Навител назначить клавишу, например, "n", то, нажав "F5+n", можно запустить программу. Остаётся только передать через скрипт это сочетание клавиш, и проблема автозапуска решена.Код:#include <Constants.au3> #include <GUIConstantsEx.au3> If WinExists(@ScriptName) Then Exit ; если окно скрипта с новым именем уже существует, выходим AutoItWinSetTitle(@ScriptName) ; в противном случае даём окну новое имя $sLog = '' ; лог обнуляем $Config = @ScriptDir & "\config.ini" ; загружаем параметры из конфига $EmulatorCommand = IniRead ( $Config, 'Emulator', 'EmulatorCommand','' ) ; командная строка эмулятора $NavitelHotKey = IniRead ( $Config, 'Emulator', 'NavitelHotKey', '' ) ; горячая клавиша Навитела $GPSGatePath = IniRead ( $Config, 'Emulator', 'GPSGatePath', '' ) ; путь к GPSGate If ProcessExists ( 'GpsGateXP.exe' ) Then ; если GPSGate уже запущен, то ProcessClose ( "GpsGateXP.exe" ) ; закрываем GpsGate Sleep ( 500 ) ; пауза EndIf If ProcessExists ( 'emulator.exe' ) Then ; если эмулятор уже запущен, то ProcessClose ( "emulator.exe" ) ; закрываем эмулятор Sleep ( 500 ) ; пауза EndIf $EmulatorStart = Run ( @ComSpec & $EmulatorCommand, '' , @SW_HIDE , $STDOUT_CHILD ) ; запускаем эмулятор WinWaitActive ( "[CLASS:#32770]","",5 ) ; ждём 5 сек появления окна свойств COM порта Send ( '{ENTER}' ) ; нажимаем OK WinWaitActive ( "[CLASS:SDL_app]","",5 ) ; ждём 5 сек появления окна эмулятора While ProcessExists ( 'emulator.exe' ) ; пока существует процесс эмулятора, $sLog = StdoutRead ( $EmulatorStart ) ; читаем из потока эмулятора Sleep ( 1000 ) ; каждую секунду $array = StringRegExp ( $sLog, "Sucessfully mounted vfat filesystem" , 0 ) ; если в поток вышло указанное сообщение, If $array Then ExitLoop ; выходим из цикла WEnd Sleep ( 100 ) ; пауза WinActivate ( "[CLASS:SDL_app]" ) ; переходим в окно эмулятора Send ( '{F2}' ) ; жмём F2, разблокируем экран Sleep ( 2000 ) ; ждём 2 сек WinActivate("[CLASS:SDL_app]") ; переходим в окно эмулятора Send ( "{F5 down}" ) ; жмём F5 Send ( "{"&$NavitelHotKey&"}" ) ; жмём горячую клавишу Send ( "{F5 up}" ) ; отпускаем F5 Run ( $GPSGatePath ) ; запускаем GpsGate Exit![]()
Последний раз редактировалось Papazol; 22.01.2011 в 21:46.
Протестировал всё это на нетбуке. Что же, мои худшие предположения вновь подтвердились. Ресурсов катастрофически не хватает. Никакие ухищрения с отключением ненужных служб не проходят. Сам эмулятор жрёт 100% CPU, ничего не поделаешь.
У меня то-же жутко тормозит на ноутбуке (Intel® Core™2 Duo Processor T7500 2.20 GHz). Загрузка одного ядра ЦП при симуляции маршрута 92-100%.
Последний раз редактировалось lti1; 23.01.2011 в 21:56.
Эмулятор таки поднялся, но с портам все равно не разобрался, запутался уже. В навител не посылаются данные. Загрузка ЦП в норме. Камень Core 2 Duo E8200 OEM 2.6GHz.
Project "Октаха. Халк-PC". Готово - 100%
Я делал так:
1) Установил vspd.
2) Установил GPSGate.
3) Определил, на каком порту у меня будет приёмник, оказался COM6 (это пример).
4) Открыл vspd и посмотрел, какие порты из первой пятёрки отсутствуют в списке физических. Оказалось, что COM1 и COM2 как раз отсутствуют.
5) Создал в vspd пару из портов COM1 и COM2.
6) В командной строке эмулятора прописал порт COM1.
7) Открыл GPSGate и назначил на выход порт COM2 (не виртуальный, а физический!)
8) На вход GPSGate назначил симулятор NMEA, так как приёмник в доме не ловит. (Потом нужно будет поменять на COM6!)
9) В симуляторе NMEA создал две точки, отличающиеся своими координатами (они должны обязательно попадать на карту, иначе гемор!).
10) Всё ещё раз проверил.
11) Отключил симулятор.
12) Запустил эмулятор (поэзия!).
13) Дождался полной загрузки и включил симулятор.
14) Запустил Навител.
15) Увидел указатель и движение карты.
16) Сделал рукой жест "Yesss!
Скрипт, который я выложил, выполняет пункты 11-14 автоматически.
Может стоит попробовать откатится обратно на WIN MOB.
Вышла 5 версия навитела, уже есть и сломанная, может в ней поиск будет нормально работать.
Что нового в Навител Навигатор 5:
— Новый быстрый роутинг! Благодаря внесенным изменениям, скорость построения маршрутов в Навител 5 теперь занимает всего 2-3 секунды, независимо от сложности и длины маршрута.
— Существенно ускорена работа программы. Отображение карты и информации о пробках происходит очень быстро.
— Улучшен алгоритм адресного поиска. Теперь найти нужный объект или адрес на карте стало еще проще и быстрее.
— Внесены некоторые изменения в интерфейсе программы.
— Исправлены ошибки предыдущей версии, существенно повышена стабильность программы.
Nissan Almera N16 продана
Непременно откатимся!![]()
Уже качаюЩа машину в гараж погоню, заодно и затестю.
___
Разницы в работе не заметил особой. При поиске вылетает. Все равно кросмасть карты.
Последний раз редактировалось eclipsemmc; 25.01.2011 в 11:51.
Project "Октаха. Халк-PC". Готово - 100%
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)