Skip to content

Instantly share code, notes, and snippets.

@bhaktatejas922
Last active September 19, 2024 18:37
Show Gist options
  • Save bhaktatejas922/15d50232bcfb13a7bb428d3a290ec00a to your computer and use it in GitHub Desktop.
Save bhaktatejas922/15d50232bcfb13a7bb428d3a290ec00a to your computer and use it in GitHub Desktop.
com_test
import time
import serial
import datetime
class MockSerial:
def __init__(self, port, baudrate):
self.port = port
self.baudrate = baudrate
self.is_open = False
self.buffer = b""
self.in_waiting = 0
def open(self):
self.is_open = True
print(f"Mock serial port {self.port} opened")
def close(self):
self.is_open = False
print(f"Mock serial port {self.port} closed")
def write(self, data):
self.buffer += data
self.in_waiting = len(self.buffer)
print(f"Data written to mock port: {data.decode('utf-8').strip()}")
def read(self, size=1):
data = self.buffer[:size]
self.buffer = self.buffer[size:]
self.in_waiting = len(self.buffer)
return data
def readline(self):
if b'\n' in self.buffer:
line, self.buffer = self.buffer.split(b'\n', 1)
self.in_waiting = len(self.buffer)
return line + b'\n'
return b""
# Get user input for COM port
use_mock = input("Use mock serial port? (y/n): ").lower() == 'y'
if use_mock:
com_port = "MOCK"
else:
com_port = input("Enter COM port (3 or 4): ")
com_port = f"COM{com_port}"
# Get user input for port number and room number
port_number = input("Enter port number: ")
room_number = input("Enter room number: ")
# Construct the message string
current_time = datetime.datetime.now().strftime("%d/%y %I:%M%p").replace('PM', 'P').replace('AM', 'A')
message = f"PART 1 DOORS SEP {current_time} ALARM {port_number} {room_number}\r\n"
print("EX of what we will send", message)
# Set up serial communication
try:
if use_mock:
ser = MockSerial(com_port, baudrate=1200)
else:
ser = serial.Serial(com_port, baudrate=1200, timeout=1)
if not ser.is_open:
ser.open()
# Send the data 5 times, every 10 seconds
for i in range(5):
ser.write(message.encode())
print(f"Message sent ({i+1}/5): {message}")
if i < 4: # Don't sleep after the last message
time.sleep(10)
# Close the serial connection
ser.close()
print("Serial connection closed.")
except serial.SerialException as e:
print(f"Error: {e}")
print("Please make sure the COM port is correct and available.")
# Example message format: Part 1 DOORS SEP 19/24 12:09P ALARM 35 219
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment