From a7b14fe39dbc026d0560455082ef42bf9eabcd06 Mon Sep 17 00:00:00 2001 From: Simon Zeyer Date: Sun, 5 Dec 2021 22:07:54 +0100 Subject: [PATCH] remake everything, now with serial --- __main__.py | 52 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/__main__.py b/__main__.py index 4017974..cf448a3 100644 --- a/__main__.py +++ b/__main__.py @@ -6,23 +6,56 @@ except: print("DEBUG; winrt disabled") DEBUG = True import win32com.client -import pythoncom import time +import pythoncom from resources import LineState, CLMgrMessage -phone_mgr = "" -lines = [] +import serial +from serial import SerialException + +portName = 'COM3' + +def sendSerial(byte): + try: + ser = serial.Serial(port=portName, baudrate=115200) + ser.write(byte) + except SerialException: + print('port already open') + class PhoneLineEventHandler(): + phone_mgr = None + lines = [] + line_selected = None + connected = False def OnDispOnLineMgrNotification(self, msg, param, returns=""): - if msg == 0: - print(CLMgrMessage.s[msg], LineState.s[param]) - for line in lines: + + if not self.phone_mgr: + self.phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr") + if not self.phone_mgr: + "Swyx not connected!" + else: + print("Swyx connected!") + if self.phone_mgr: + if msg == CLMgrMessage.CLMgrLineStateChangedMessage: + line = self.phone_mgr.DispGetLine(param) + print("Line: {} {}".format( + param, + LineState.s[line.DispState]) + ) if line.DispState != LineState.Inactive: + if line.DispState == LineState.Ringing: + sendSerial(b'y') + else: + sendSerial(b'r') asyncio.run(try_pause()) + for linenum in range(self.phone_mgr.DispNumberOfLines): + line = self.phone_mgr.DispGetLine(linenum) + if line.DispState != LineState.Inactive: return True asyncio.run(try_play()) + sendSerial(b'o') return True # async def get_media_info(): @@ -70,10 +103,7 @@ async def try_pause(): await current_session.try_pause_async() if __name__ == '__main__': - phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr") - phone_mgr_event = win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler) - for i in range(3): - lines.append(phone_mgr.DispGetLine(i)) + win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler) while True: - #pythoncom.PumpWaitingMessages() + pythoncom.PumpWaitingMessages() time.sleep(0.1) # Don't use up all our CPU checking constantly \ No newline at end of file