понедельник, 31 августа 2015 г.

Контроль DLP проектора Mitsubishielectric EW270U из скрипта VBS

Данный VBS-скрипт предназначен для управления проектором Mitsubishielectric EW270U over RS-232 (или over USB через конвертор USB/RS-232) с голосовым сопровождением действий (включение-выключение, управление громкостью, навигации и завершения работы).
















Cистемные требования и зависимости
  1.  Win OS 32/64-bit.
  2.  COM-сервер DynWrapx.dll.
  3.  SAPI (для озвучивания используется интерфейс по-умолчанию).
  4.  Физический RS-232 or virtual COM over USB.
  5.  Подключенный проектор Mitsubishielectric моделей EW270U/EW230U-ST/EX240U/ES200U.
 Кишочки скрипта:
' Mitsubishielectric_Projector_EW270U_2.VBS
' Демонстрационный скрипт управления проектором Mitsubishielectric EW270U over RS-232 c голосовым сопровождением
' Поддержка следующих команд: включение-выключение, управление громкостью, переключения кадров и завершения скрипта
' Видео: http://www.youtube.com/watch?v=28PkWiXksl8, http://www.youtube.com/watch?v=9yZGb18nDzM
'
' Разработчик: Бадло Сергей Григорьевич aka raxp
' H-page: http://raxp.radioliga.com
'
' Зависимости:
' · Win OS 32/64-bit
' · COM-сервер DynWrapx.dll
' · SAPI (для озвучивания используется интерфейс по-умолчанию)
' · Физический RS-232 or virtual COM over USB
' · Подключенный проектор Mitsubishielectric моделей EW270U/EW230U-ST/EX240U/ES200U
'
' Региcтрация интерфейсов (обязательно первично однократно):
' · в данном скрипте задайте порт подключения проектора
' · запустите regdynwrapx.bat (на Windows Vista/7/8/8.1 запускать правой кнопкой мыши от имени Администратора)
' Использование:
' · запустите run_Mitsubishielectric_Projector_EW270U_2.cmd
' · для завершения нажмите 'Escape'


' Список команд
cmdon      = chr(13)&"*pow=on#"&chr(13)  ' активируем проектор 'Space'
cmdoff     = chr(13)&"*pow=off#"&chr(13) ' вырубаем проектор 'Space'
cmdup      = chr(13)&"*up#"&chr(13)      ' 'Up'
cmddown    = chr(13)&"*down#"&chr(13)    ' 'Down'
cmdleft    = chr(13)&"*left#"&chr(13)    ' 'Left'
cmdright   = chr(13)&"*right#"&chr(13)   ' 'Right'
cmdvolup   = chr(13)&"*vol=+#"&chr(13)   ' громкость больше '+'
cmdvoldown = chr(13)&"*vol=-#"&chr(13)   ' громкость меньше '-'

' подключаем голосовое сопровождение
' при надоедливости голоса speakon = false
Dim Speak
speakon = true ' разрешаем голосовое сопровождение
Set Speak = CreateObject("sapi.spvoice")
' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true
' создаем объект DynamicWrapperX
Set Wrap = CreateObject("DynamicWrapperX.2")
Wrap.Register "user32.dll", "GetAsyncKeyState", "i=l", "f=s", "r=l"

' Настройка порта COM6, на котором проектор
port = "COM6"
' регистрируем функи для работы с портом
Wrap.Register "KERNEL32.DLL", "CreateFile", "i=sllllll", "r=l"
Wrap.Register "KERNEL32.DLL", "WriteFile", "i=lslll", "r=l" ' ANSI
' вариант с Unicode - Wrap.Register "KERNEL32.DLL", "WriteFile", "i=lllll", "r=l"
Wrap.Register "KERNEL32.DLL", "CloseHandle", "i=l", "r=l"
Wrap.Register "KERNEL32.DLL", "EscapeCommFunction", "i=hu", "r=l"
' забиваем аттрибуты
GENERIC_WRITE = 1073741824
FILE_SHARE_READ = 1
FILE_SHARE_WRITE = 2
OPEN_EXISTING = 3
FILE_ATTRIBUTE_NORMAL = 128
cbWritten = " "
pcbWritten = Wrap.StrPtr(cbWritten)
' открываем нужный нам порт COMn
hFile = Wrap.CreateFile(port, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
' отключаем сигналы на DTR/RTS
Wrap.EscapeCommFunction hFile, 4
Wrap.EscapeCommFunction hFile, 6

' Информируем пользователя о начале работы
if (speakon = true) then
Speak.Speak "Готов измываться над проектором."
End if

p = true

' запускаем бесконечный цикл по условию нажатия 'Escape' с задержкой
Do While Wrap.GetAsyncKeyState(27) = "0"

'задержка на кол-во миллисекунд
WScript.Sleep 500
' отлавливаем нажатие SPace (пробела)
probel = Wrap.GetAsyncKeyState(32)
' отлавливаем нажатие Up
upt = Wrap.GetAsyncKeyState(38)
' отлавливаем нажатие Down
downt = Wrap.GetAsyncKeyState(40)
' отлавливаем нажатие Left
leftt = Wrap.GetAsyncKeyState(37)
' отлавливаем нажатие Right
rightt = Wrap.GetAsyncKeyState(39)
' отлавливаем нажатие Add (+) key
plus = Wrap.GetAsyncKeyState(187)
' отлавливаем нажатие SUBTRACT (-) key
minus = Wrap.GetAsyncKeyState(189)


if (probel = "1") then
 p = not p

 if (p = false) then
  ' активируем проектор
  Wrap.WriteFile hFile, cmdon, Len(cmdon), pcbWritten, 0
  ' озвучиваем
  if (speakon = true) then
   Speak.Speak "Проектор включен."
  End if
 End if

 if (p = true) then
  ' вырубаем проектор
  Wrap.WriteFile hFile, cmdoff, Len(cmdoff), pcbWritten, 0
  ' озвучиваем
  if (speakon = true) then
   Speak.Speak "Проектор выключен."
  End if
 End if
End if

if (upt = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmdup, Len(cmdup), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Вверх."
 End if
End if

if (downt = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmddown, Len(cmddown), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Вниз."
 End if
End if

if (leftt = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmdleft, Len(cmdleft), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Влево."
 End if
End if

if (rightt = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmdright, Len(cmdright), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Вправо."
 End if
End if

if (plus = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmdvolup, Len(cmdvolup), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Громкость больше."
 End if
End if

if (minus = "1") then
 ' посылаем
 Wrap.WriteFile hFile, cmdvoldown, Len(cmdvoldown), pcbWritten, 0
 ' озвучиваем
 if (speakon = true) then
  Speak.Speak "Громкость меньше."
 End if
End if

Loop ' завершение цикла

' закрываем порт
Wrap.CloseHandle(hFile)
' озвучиваем
if (speakon = true) then
 Speak.Speak "Программа завершена."
End if

Использование
  1.  Задайте порт подключения проектора.
  2.  Запустите 'regdynwrapx_2.bat' (на Windows Vista/7/8/8.1 запускать правой кнопкой мыши от имени Администратора).
  3.  Запустите 'run_Mitsubishielectric_Projector_EW270U_2.cmd'.
cкачать полный комплект.

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.