Показано с 1 по 10 из 168

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Продвинутый Аватар для Papazol
    Регистрация
    24.05.2009
    Сообщений
    326
    Вес репутации
    311

    По умолчанию Re: Navitel Navigator (Android-эмулятор)

    Протестировав предложенный скрипт, я тут сделал некоторые выводы.

    1) Гораздо удобнее применять не VSPE, а vspd. Потому что vspd не требует запуска всякий раз, когда нам нужно получить порты. Однажды настроили - и всё. Это упрощает и скрипт тоже. К тому же не требуется отдельный файл конфигурации.
    2) Обойтись без GPSGate никак не возможно, потому что нужно выполнить уже известные противоречивые требования: на момент запуска эмулятора порт, с которым эмулятор работает, должен существовать, но данных на нём быть не должно. Таким образом, нужно иметь в системе заранее сформированную пару виртуальных (но считающихся физическими) портов, один из которых задействован для соединения с эмулятором, второй является выходом GPSGate. Если при старте эмулятора GPSGate закрыт, то на второй порт ничего не передаётся, а первый порт существует, что и требуется.
    3) Скрипт я немного модифицировал. Из ini-файла убрал параметры VSPE и задержки. Смысла через ini выставлять задержки я не вижу, хотя мне пришлось некоторые временнЫе параметры изменить, но они и не были записаны в ini. Добавил параметр "Горячая клавиша Навитела". Также я изменил способ закрытия процессов, не нужных в данный момент, так как предложенный метод у меня приводил к ошибкам.
    Код:
    #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
    4) В Андроиде есть фича: назначение на приложения клавиш быстрого доступа. Нажимать эти клавиши необходимо совместно с клавишей "Поиск", каковой в эмуляторе является клавиша F5. Если на Навител назначить клавишу, например, "n", то, нажав "F5+n", можно запустить программу. Остаётся только передать через скрипт это сочетание клавиш, и проблема автозапуска решена.
    Вложения Вложения
    Последний раз редактировалось Papazol; 22.01.2011 в 21:46.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •