Webové stránky K5
Články zobrazeny celkem: 1257207x  
Nabídka
Úvod
Přehled
K5
Masakr
Tipy
Odkazy
Vyhledávání

Reklama

Pár skriptů pro ovládání Panasonic PT-AE4000E Tisk E-mail
Hodnocení čtenářů: / 0
SlabéVynikající 
Napsal K5   
Tuesday, 02. March 2010
VB skript pro ovládání a vyčítání stavu projektoru Panasonic PT-AE4000E a PT-AE4000U je podle všeho již hotov (nějak jsem neměl potřebu v něm cokoli měnit už týden), tož je čas předhodit nějaké ty příklady praktického užití.

Zapnout a vypnout projektor tímto skriptem dokáže snad i to největší trdlo, stačí vytvořit zástupce tohoto skriptu a pak připsat do příkazového řádku uvnitř tohoto LNK souboru /C:PON případně ještě /V:1 (ev. /C:POF). Nicméně přepnout poměr stran projektoru tak, aby byl zdrojový obraz oříznutý (ZOOM) a "letterboxed source" se promítal jako plnohodnotný formát 16:9 a naopak, aby se ZOOM vypnul a nastavil se poměr stran na přirozených 16:9, to už je trochu složitější.

Dávkový soubor Letterboxed_source.BAT:
@echo off
set WhereAmI=%~dp0
set WhereAmI=%WhereAmI:~,-1%
set ScriptName=%WhereAmI%\projector_serial_terminal_control.vbs
set Engine=%SystemRoot%\SysWOW64\cscript.exe
if not exist "%Engine%" set Engine=%SystemRoot%\system32\cscript.exe
setlocal
 set Command=QPW
 set ResponseFile=%TEMP%\projector_state.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error1
 if not exist %ResponseFile% goto error1
 set ProjectorState=
 FOR /F %%I IN (%ResponseFile%) DO set ProjectorState=%%I
 del %ResponseFile%
 set Question=
 set CommonPart=nastavit pro zobrazování širokoúhlého obrazu, který je zkurvený převodem do formátu Non-Anamorphic (Letterboxed)?
 if "%ProjectorState%" == "000" set Question=Projektor je vypnutý, mám ho zapnout a %CommonPart%
 if "%ProjectorState%" == "001" set Question=Mám projektor %CommonPart%
 set CommonPart=
 if "%Question%" == "" goto error2
 %WhereAmI%\MsgBoxEx.EXE 4 %Question%
 if %ErrorLevel% equ 7 goto ne
 if %ErrorLevel% equ 6 goto ano
 goto error3
:ano
 if "%ProjectorState%" == "001" goto projector_on
endlocal
setlocal
 set Command=PON
 set ResponseFile=%TEMP%\projector_response.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error4
 if not exist %ResponseFile% goto error4
 echo Projektor se zapíná... prodleva 30 vteřin
 sleep 30
 del %ResponseFile%
endlocal
setlocal
 set Command=QPW
 set ResponseFile=%TEMP%\projector_state.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error1
 if not exist %ResponseFile% goto error1
 set ProjectorState=
 FOR /F %%I IN (%ResponseFile%) DO set ProjectorState=%%I
 del %ResponseFile%
 if "%ProjectorState%" == "000" goto error5
 if "%ProjectorState%" == "001" goto projector_on
 goto error1
:projector_on 
endlocal
setlocal
 echo Projektor je zapnutý, posílám povely...
 echo Nastavení režimu CINEMA1
 set Command=VPM:CN1
 set ResponseFile=%TEMP%\projector_response.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error6
 if not exist %ResponseFile% goto error6
 del %ResponseFile%
 rem  1 = s16:9 , 2 = H-FIT , 3 = V-FIT , 4 = ZOOM , 5 = 4:3 , 6 = 16:9
 set /A LOOP=4
 if exist %WhereAmI%\ResetZoom.bat call %WhereAmI%\ResetZoom.bat 
 :loop
 if %LOOP% EQU 0 goto endloop
 sleep 1
 if %LOOP% EQU 4 echo Zoom: s16:9   
 if %LOOP% EQU 3 echo Zoom: H-FIT
 if %LOOP% EQU 2 echo Zoom: V-FIT
 if %LOOP% EQU 1 echo Zoom: ZOOM
 if %LOOP% EQU 6 echo Zoom: 4:3
 if %LOOP% EQU 5 echo Zoom: 16:9
 set Command=VS1
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error6
 if not exist %ResponseFile% goto error6
 set /A LOOP=%LOOP% - 1
 goto loop
 :endloop
 del %ResponseFile%
 echo set /A LOOP=2 + %%LOOP%% >%WhereAmI%\ResetZoom.bat
 echo Hotovo...
 sleep 2
 goto clear
:ne
 echo Operace zrušena uživatelem...
 sleep 2
:clear
endlocal
set Engine=
set ScriptName=
set WhereAmI=
set ResponseFile=
goto :EOF

:error1
 echo Nastala chyba při zjišťování stavu zapnutí/vypnutí projektoru!
 pause
 goto clear

:error2
 echo Nastala chyba při vyhodnocování odpovědi z projektoru!
 pause
 goto clear

:error3
 echo Nastala chyba při vyhodnocování odpovědi z MsgBoxEx.EXE!
 pause
 goto clear

:error4
 echo Nastala chyba při zapínání projektoru!
 pause
 goto clear

:error5
 echo Nastala chyba, nepodařilo se zapnout projektor!
 pause
 goto clear

:error6
 echo Nastala chyba při zasílání povelu do projektoru!
 pause
 goto clear

K tomu jen pár poznámek: v případě potřeby dávka nabídne zapnutí projektoru. Protože stav ZOOMu je zachován i po vypnutí a zapnutí projektoru a protože nelze nijak z projektoru vyčíst, v jakém stavu ZOOM je, je tento stav uložen a při příštím použití zohledněn - pokud je ZOOM změněn dálkovým ovládáním, pak není jak ho nastavit tuto dávkou správně a proto se musí ZOOM dálkovým ovládáním vždy vrátit do posledního stavu, jaký si dávka "pamatuje" nebo do výchozího 16:9 a smazat "paměť" konkrétně tedy soubor ResetZoom.bat

Dávkový soubor Anamorphic_source.BAT:
@echo off
set WhereAmI=%~dp0
set WhereAmI=%WhereAmI:~,-1%
set ScriptName=%WhereAmI%\projector_serial_terminal_control.vbs
set Engine=%SystemRoot%\SysWOW64\cscript.exe
if not exist "%Engine%" set Engine=%SystemRoot%\system32\cscript.exe
setlocal
 set Command=QPW
 set ResponseFile=%TEMP%\projector_state.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error1
 if not exist %ResponseFile% goto error1
 set ProjectorState=
 FOR /F %%I IN (%ResponseFile%) DO set ProjectorState=%%I
 del %ResponseFile%
 set Question=
 set CommonPart=nastavit pro zobrazování obrazu v plné velikosti?
 if "%ProjectorState%" == "000" set Question=Projektor je vypnutý, mám ho zapnout a %CommonPart%
 if "%ProjectorState%" == "001" set Question=Mám projektor %CommonPart%
 set CommonPart=
 if "%Question%" == "" goto error2
 %WhereAmI%\MsgBoxEx.EXE 4 %Question%
 if %ErrorLevel% equ 7 goto ne
 if %ErrorLevel% equ 6 goto ano
 goto error3
:ano
 if "%ProjectorState%" == "001" goto projector_on
endlocal
setlocal
 set Command=PON
 set ResponseFile=%TEMP%\projector_response.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error4
 if not exist %ResponseFile% goto error4
 echo Projektor se zapíná... prodleva 30 vteřin
 sleep 30
 del %ResponseFile%
endlocal
setlocal
 set Command=QPW
 set ResponseFile=%TEMP%\projector_state.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error1
 if not exist %ResponseFile% goto error1
 set ProjectorState=
 FOR /F %%I IN (%ResponseFile%) DO set ProjectorState=%%I
 del %ResponseFile%
 if "%ProjectorState%" == "000" goto error5
 if "%ProjectorState%" == "001" goto projector_on
 goto error1
:projector_on 
endlocal
setlocal
 echo Projektor je zapnutý, posílám povely...
 echo Nastavení režimu CINEMA1
 set Command=VPM:CN1
 set ResponseFile=%TEMP%\projector_response.txt
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error6
 if not exist %ResponseFile% goto error6
 del %ResponseFile%
 rem  1 = s16:9 , 2 = H-FIT , 3 = V-FIT , 4 = ZOOM , 5 = 4:3 , 6 = 16:9
 set /A LOOP=0
 if exist %WhereAmI%\ResetZoom.bat call %WhereAmI%\ResetZoom.bat 
 :loop
 if %LOOP% EQU 0 goto endloop
 sleep 1
 if %LOOP% EQU 6 echo Zoom: s16:9   
 if %LOOP% EQU 5 echo Zoom: H-FIT
 if %LOOP% EQU 4 echo Zoom: V-FIT
 if %LOOP% EQU 3 echo Zoom: ZOOM
 if %LOOP% EQU 2 echo Zoom: 4:3
 if %LOOP% EQU 1 echo Zoom: 16:9
 set Command=VS1
 "%Engine%" //NoLogo "%ScriptName%" /P:1 /B:9600,N,8,1 /L:"%ResponseFile%" /M:R /A:Y /U:N /V:1 /X:N /C:%Command%
 if %ErrorLevel% neq 0 goto error6
 if not exist %ResponseFile% goto error6
 set /A LOOP=%LOOP% - 1
 goto loop
 :endloop
 if exist %ResponseFile% del %ResponseFile%
 if exist %WhereAmI%\ResetZoom.bat del %WhereAmI%\ResetZoom.bat 
 echo Hotovo...
 sleep 2
 goto clear
:ne
 echo Operace zrušena uživatelem...
 sleep 2
:clear
endlocal
set Engine=
set ScriptName=
set WhereAmI=
set ResponseFile=
goto :EOF

:error1
 echo Nastala chyba při zjišťování stavu zapnutí/vypnutí projektoru!
 pause
 goto clear

:error2
 echo Nastala chyba při vyhodnocování odpovědi z projektoru!
 pause
 goto clear

:error3
 echo Nastala chyba při vyhodnocování odpovědi z MsgBoxEx.EXE!
 pause
 goto clear

:error4
 echo Nastala chyba při zapínání projektoru!
 pause
 goto clear

:error5
 echo Nastala chyba, nepodařilo se zapnout projektor!
 pause
 goto clear

:error6
 echo Nastala chyba při zasílání povelu do projektoru!
 pause
 goto clear

Poznámka: platí totéž co předchozí skript.

Obě dávky jsou schopny běžet jak ve 32-bit Windows (x86), tak i v 64-bit Windows (x64). Význam parametrů příkazového řádku skriptu je popsán přímo ve skriptu, případně v tomto článku. Další články na téma Panasonic PT-AE4000 viz sloupec "Viz též" v pravo.

Z odkazů níže je možné stáhnout hotové dávky, skript i dotazovací program (pravým tlačítkem myši a vybrat Uložit jako...)::
Dotazovací program MsgBoxEx.EXE je ve článku MessageBoxEx v baťáku.

Tags: RS-232 projector control/automation from command-line

 
< Předch.   Další >

Google

Reklama

Nahlédněte
Futurama
BSG
MAME
SORD M5
VMware
Total Commander
ALIX a m0n0wall
Cisco PIX
Nejnovější
Nejčtenější
Viz též
   Úvod arrow K5 arrow Taxem zase jednou něco dělal arrow Pár skriptů pro ovládání Panasonic PT-AE4000E
Powered by Joomla!