Форум » » Как реализовать переключение видео режима на ПК » Ответить

Как реализовать переключение видео режима на ПК

Вячеслав: Требуется минимальными трудо и $ затратами реализовать переключение с crestron режимов КЛОН/РАСШИРЕННЫЙ РАБОЧИЙ СТОЛ/ ДУБЛИРОВАНИЕ ЭКРАНА на Windows Может есть у кого подобный опыт реализации такой задачи.

Ответов - 13

DmitriiP: гляньте https://www.sevenforums.com/tutorials/37625-display-switch-shortcut-create.html или аналог и свяжите с EventGhost или crestron e-script

Вячеслав: Спасибо. EventGhost подойдет, раз есть прямая команда. По crestron e-script информации не нашел, где было бы подробно и с примерами описано как это работает и где этот зверь вообще живет.

DmitriiP: e-script живёт на ftp /software/e-script , запускает .vbs скрипты, документация паршивая, и как все "e-" не обновлялся с 2006 года есть ещё /software/e-Start e-Start sets up a list of digital join numbers that can be triggered from the control system and the actions associated with them. The action may simulate pressing a key on the PC keyboard or it may start or stop a program running on the PC.


kislez2015: Вячеслав DmitriiP а подскажите , как в рамках этой задачи скрестить EventGhost и крестрон? тоже хочется потестить))

kislez2015: соединение с плагином есть, а как команду отправить?

DmitriiP: Какой плагин вы используете? самый простой способ: 1) Plugin Broadcaster (Всё что нас от него интересует это) IP (Listening Address) и Port 2) В крестроне UDP/IP communication c IP (Listening Address) и портом из EventGhost'a 3) создаёте макрос например Show OSD 4) послать команду с крестрона, добавить команду к макросу (drag&drop) 4) послать команду с крестрона ещё раз , результат:

kislez2015: я использовал плагин Network Event Receiver и отправлял команду из ссылки %windir%\System32\DisplaySwitch.exe /extend

DmitriiP: с мониторами не скажу, так как подключен только 1 можно ещё посмотреть встроенный макрос System->Display ->Change Display Settings с Network Event Receiver немного не ("минимальными трудо и $ затратами") ;)

kislez2015: DmitriiP а почему Network Event Receiver не минимальными?)) с ним чтото не так?

DmitriiP: kislez2015 послать простой Serial по UDP мне кадется немного проще чем: Network Event Receiver он же TCPEvents Authentication process TCPEvents uses MD5 encrypted APOP style authentication to avoid sending passwords in plaintext. sender: Connect to receiver. Send quintessence\n\r. receiver: Send cookie. sender: The password is appended to the cookie and the MD5 digest is calculated and sent back to the receiver. receiver: If the received MD5 digest is correct then it sends accept. sender: Send payload {payload string}\n{event}\nclose\n to the receiver. receiver: Close the connection to the sender. P.S. я не настаиваю, если вам больше нравится Network Event Receiver, то разбирайтесь :)

kislez2015: DmitriiP ой спасибо да, полезная штука может быть

Вячеслав: Да если бы я знал про Brodcaster то не потратил бы 2 дня на то чтоб понять почему Network Event Receiver не работает На самом деле, есть 2 пути заставить Network Event Receiver работать 1.Следовать рекомендациям процедуры авторизации (видимо алгоритм соответствует упомянутому APOP). Но там на форуме у людей были с этим проблемы (не верный делиметр и т.п.) Процедура относительно проста a. Crestron открывает соединение отправив на ПК с установленным EventGHost (на порт настроенный в параметре плагина Network Event Receiver) слово quintessence\x0A b. ПК в ответ присылает случайный набор символов (cookies) c.Crestron прибавляет к этому случайному набору значение параметра password, кодирует полученный результат с помощью MD5 и отправляет опять на ПК (+\x0A) d. ПК предварительно имеет ожидаемую строку генерированную на его стороне и сравнивает с той что получена от Crestron. Если они совпали, то ПК отправляет ответ accept\x0A С того момента можно отправлять команды с crestron. Например отправляем слово test\x0A Они будут появляться в окне лога с префиксом TCP(префикс в настройках можно поменять). Например TCP.test Далее как в примере перетаскиваете это событие в макрос в котором есть нужная вам команда для управления ПК. 2.Можно обойти процедуру авторизации отредактировав блокнотом в директории программы скрипт написанный на python для Network Event Receiver (_init_.py) достаточно поправить 1 символ def initiate_close(self): if self.writable(): self.push("close\n") #asynchat.async_chat.handle_close(self) self.plugin.EndLastEvent() self.state = self.state1 меняем 1 на 3 правда заметил один нюанс, проходят команды начиная со 2-ой. Но в питоне я не силен и пока не разобрался как это исправить. Но в общем это не проблема, можно просто послать \x0A для начала передачи команд.

DmitriiP: self.state = self.state1 Варинат 1: поменяйте в обоих местах при инициализации и при закрытии сессии def __init__(self, sock, addr, password, plugin, server): ... # Initialize input data buffer self.data = '' self.state = self.state1 def initiate_close(self): ..... self.state = self.state1 Варинат 2: измените первую в __init__, а вторую в initiate_close грохните чтоб не мешалась ;) Варинат 3: 1) грохнуть функции def state1(self, line): и def state2(self, line): 2) def state3(self, line): переименовать в def state1(self, line): P.S. Лучше создать отдельный плагин на базе этого, чтоб при обновлении этот state1 не навернулся, да и c родным Sender оставить совместимость;)



полная версия страницы