77 lines
2.4 KiB
Python
Executable File
77 lines
2.4 KiB
Python
Executable File
import os
|
|
import sys
|
|
import socket
|
|
from time import sleep
|
|
from crccheck.crc import Crc16, CrcArc
|
|
|
|
# Signal Types
|
|
# Send with image: "SIA-DCS"0001L0#9998[9998|Nri1/BA01^Dette er sone 1^][Vhttps://granitebeltchristmasfarm.com.au/wp-content/uploads/2023/08/Grinch-1.jpg]
|
|
# PANIC: "SIA-DCS"0001L0#1234[1234|Nri1/PA001][X010E57.5698080][Y59N12.8358840]
|
|
# PANIC RESTORE: "SIA-DCS"0001L0#1234[1234|Nri1/PR001][X010E57.5698080][Y59N12.8358840]
|
|
# Set: "SIA-DCS"0001L0#1234[1234|Nri1/CL001]
|
|
# Unset: "SIA-DCS"0001L0#1234[1234|Nri1/OP001]
|
|
# Test Report: "SIA-DCS"0001L0#1234[1234|Nri1/RP0]
|
|
|
|
def sendSia(type, host, port):
|
|
#type = '"NULL"0000L0#107504[]'
|
|
data = type.encode()
|
|
crc = CrcArc.calc(data)
|
|
crcstr = str(hex(crc)).split('x')
|
|
crcstr = str(crcstr[1].upper())
|
|
if len(crcstr) == 2:
|
|
crcstr = '00' + crcstr
|
|
if len(crcstr) == 3:
|
|
crcstr = '0' + crcstr
|
|
length = str(hex(len(data))).split('x')
|
|
client_socket = socket.socket()
|
|
client_socket.connect((host, port))
|
|
client_socket.settimeout(10)
|
|
text = '\n' + crcstr + '00' + length[1].upper() + type + '\r'
|
|
print('Sent signal: ' + f'{text}')
|
|
message = bytes(text, 'ASCII')
|
|
client_socket.send(message)
|
|
data = client_socket.recv(64).decode()
|
|
print("Received from server: " + data)
|
|
client_socket.close()
|
|
|
|
def clear_screen():
|
|
os.system('cls' if os.name == 'nt' else 'clear')
|
|
|
|
host = ""
|
|
port = ""
|
|
def program():
|
|
print('### SIA-DCS TESTER v1.0 ###\n')
|
|
global host
|
|
global port
|
|
if not host:
|
|
host = input('Enter reciever IP: ')
|
|
port = int(input('Enter reciever port: '))
|
|
print('1. SIA-DCS(Auto Generated) | 2. SIA-DCS (Full String)')
|
|
inputType = input('Select signal type: ')
|
|
if inputType == '1':
|
|
id = input('Enter Client ID: ')
|
|
signalType = input('Enter signal type: ')
|
|
zone = input('Enter zone number: ')
|
|
if signalType == "BA":
|
|
image = input('Enter image URL: ')
|
|
else:
|
|
image = ""
|
|
type = '"SIA-DCS"0005L0#' + id + '[' + id + '|Nri1/' + signalType + zone + '][V' + image + ']'
|
|
if inputType == '2':
|
|
print('Example string: "SIA-DCS"0005L0#1234[1234|Nri1/RP0]')
|
|
type = input('Enter full SIA string: ')
|
|
while inputType not in ['1', '2']:
|
|
program()
|
|
|
|
sendSia(type, host, port)
|
|
|
|
check = input('\nSend new signal? y/n: ')
|
|
if check == 'y':
|
|
clear_screen()
|
|
program()
|
|
else:
|
|
clear_screen()
|
|
pass
|
|
|
|
program()
|