PDA

Показать полную графическую версию : Запуск доп.программы по условию в консоли(STDOUT) первой.


Dobrinia
17-01-2011, 06:56
Есть программа (эмулятор Android) http://developer.android.com/guide/developing/tools/emulator.html
Нужно запустить её с параметрами и анализировать вывод, что бы запустить доп.программу (GPS приёмник) после загрузки эмулятора.
Если запусткать всё вместе - эмулятор вываливается с ошибкой.
Должно работать так:
1. запускаем эмулятор.
2. в появившемся окне нажимаем ОК
3. ждём появленяи в консоле строки "Emulator started".
4. Запускаем доп прогу.
Я набросал примерно скрипт. Немогу правильно анализировать вывод(наверное нетак что-то делаю)

Local $foo
Local $line
Local $STDOUT_CHILD
$foo = Run(@ComSpec & " /c emulator.exe -system system.img -kernel kernel-qemu -data userdata.img -sdcard sdcard.img -memory 512 -netfast -cpu-delay 0 -partition-size 256 -skin 800x480 -gps COM1 -debug all", '', @SW_HIDE, $STDOUT_CHILD)
WinWaitActive("[CLASS:#32770]") ;ждём пока не появится окно
Send('{ENTER}') ;нажимаем ок
WinWaitActive("[CLASS:SDL_app]") ;ждём появленяи эмулятора
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
WEnd
;тут нужно проанализировать вывод с помощью рег.выражения
Run('gps_emu.exe')
Exit

amel27
18-01-2011, 08:30
как-то так:
While 1
Sleep(200)
$line &= StdoutRead($foo)
If StringInStr($line, "Emulator started") Then ExitLoop
WEnd

madmasles
18-01-2011, 09:24
amel27,
А если строка Emulator started не появится вообще.

amel27
18-01-2011, 12:31
А если строка Emulator started не появится вообще. »
будет бесконечный цикл, но судя по задаче этого не должно быть... ;)
можно поставить сообщение об ошибке по таймауту типа "запуск за выделенное время не произведен"




© OSzone.net 2001-2012