Last active
September 19, 2024 18:37
-
-
Save bhaktatejas922/15d50232bcfb13a7bb428d3a290ec00a to your computer and use it in GitHub Desktop.
com_test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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