alseambusher

Untitled

Sep 21st, 2024
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. from base64 import encode
  2. from email import message
  3. import serial
  4. import serial.tools.list_ports as ports
  5. import time
  6. from threading import Lock
  7.  
  8. com_ports = list(ports.comports())
  9. mutex = Lock()
  10.  
  11. class Message:
  12.     PAN = "pan"
  13.     TILT = "tilt"
  14.     LED = "led"
  15.     DELIMITER = "#"
  16.     save_messages = True
  17.     SAVE_LOCATION = "saved/save.kakashi"
  18.  
  19.     arduino = serial.Serial(port=com_ports[2].device, baudrate=115200, timeout=.1)
  20.  
  21.     @staticmethod
  22.     def pnt(mode, device, value):
  23.         return f'{mode} {device} {value}'
  24.  
  25.     @staticmethod
  26.     def led(value):
  27.         return f'led {value}'
  28.  
  29.     @staticmethod
  30.     def send(message):
  31.         mutex.acquire()
  32.         print(message)
  33.         Message.arduino.write((message + Message.DELIMITER).encode("utf-8"))
  34.         if Message.save_messages:
  35.             with open(Message.SAVE_LOCATION, "a") as f:
  36.                 f.write(f"{time.time()}{Message.DELIMITER}{message}\n")
  37.  
  38.         time.sleep(0.005)
  39.         print(Message.arduino.readline())
  40.         mutex.release()
  41.  
  42.     @staticmethod
  43.     def playback(filename=None):
  44.         filename = filename if filename else Message.SAVE_LOCATION
  45.         with open(filename, "r") as f:
  46.             t_prev = None
  47.             for line in f.readlines():
  48.                 t, message = line.split(Message.DELIMITER)
  49.                 if t_prev:
  50.                     time.sleep(float(t) - float(t_prev))
  51.                 t_prev = t
  52.                 Message.send(message)
  53.  
  54.     @staticmethod
  55.     def clear_save(filename=None):
  56.         filename = filename if filename else Message.SAVE_LOCATION
  57.         open(filename, 'w').close()
  58.  
Add Comment
Please, Sign In to add comment