mirror of https://github.com/Lapikud/Viido.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
2.7 KiB
130 lines
2.7 KiB
#!/usr/bin/env python3 |
|
import serial |
|
from time import sleep |
|
|
|
def on_hdmi(): |
|
p = Projektor("/dev/ttyS0") |
|
print("HDMI ON") |
|
while True: |
|
if p.get_power() != "ON": |
|
print("PROJECTOR ON") |
|
p.on() |
|
|
|
elif p.get_source() != "HDMI": |
|
print("SWITCHING HDMI") |
|
p.hdmi() |
|
break |
|
|
|
else: |
|
break |
|
sleep(1) |
|
print("DONE") |
|
p.close() |
|
|
|
def on_vga(): |
|
p = Projektor("/dev/ttyS0") |
|
print("VGA ON") |
|
while True: |
|
if p.get_power() != "ON": |
|
print("PROJECTOR ON") |
|
p.on() |
|
|
|
elif p.get_source() != "VGA": |
|
print("SWITCHING VGA") |
|
p.vga() |
|
break |
|
|
|
else: |
|
break |
|
sleep(1) |
|
print("DONE") |
|
p.close() |
|
|
|
|
|
def get_status(): |
|
p = Projektor("/dev/ttyS0") |
|
if p.get_power() == "OFF": |
|
status = "off" |
|
|
|
else: |
|
status = p.get_source() |
|
print("DONE") |
|
p.close() |
|
return status |
|
|
|
def off(): |
|
p = Projektor("/dev/ttyS0") |
|
p.off() |
|
|
|
class Projektor: |
|
def __init__(self, device): |
|
self.ser = serial.Serial(device, 115200, timeout=1) |
|
|
|
def close(self): |
|
self.ser.close() |
|
|
|
def ___delete__(self, instance): |
|
self.close() |
|
|
|
def on(self): |
|
self.ser.write(b"\r*pow=on#\r") |
|
|
|
def off(self): |
|
self.ser.write(b"\r*pow=off#\r") |
|
|
|
def hdmi(self): |
|
self.ser.write(b"\r*sour=hdmi#\r") |
|
|
|
def vga(self): |
|
self.ser.write(b"\r*sour=RGB2#\r") |
|
|
|
def get_source(self): |
|
self.ser.read() |
|
self.ser.write(b"\r*sour=?#\r") |
|
|
|
while True: |
|
c = self.ser.read(1) |
|
if c == b">": |
|
self.ser.read(17) |
|
source = self.ser.read(4) |
|
if source == b"HDMI": |
|
return "hdmi" |
|
elif source == b"RGB2": |
|
return "vga" |
|
elif not c: |
|
break |
|
|
|
def get_power(self): |
|
self.ser.read() |
|
self.ser.write(b"\r*pow=?#\r") |
|
|
|
while True: |
|
c = self.ser.read(1) |
|
if c == b">": |
|
self.ser.read(15) |
|
status = self.ser.read(3) |
|
|
|
if status == b"k i": |
|
return None |
|
elif status == b"ON#": |
|
return "ON" |
|
elif status == b"OFF": |
|
return "OFF" |
|
|
|
elif not c: |
|
break |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
p = Projektor("/dev/ttyS0") |
|
while True: |
|
if p.get_power() != "ON": |
|
print("POWER ON") |
|
p.on() |
|
|
|
elif p.get_source() != "HDMI": |
|
print("switching HDMI") |
|
p.hdmi() |
|
else: |
|
break
|
|
|