1
0
mirror of https://github.com/AG7GN/nexus-utilities.git synced 2025-05-16 14:40:09 -07:00
nexus-utilities/radio-monitor.py
2019-11-16 18:40:29 -08:00

89 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python
# ptt.py
#
#
# Monitors the status of a BCM GPIO pin in output and updates
# a label accordingly.
#
# Author: Steve Magnuson AG7GN
import Tkinter
import tkFont
from RPi import GPIO
import time
version='0.1.1'
win_title='TX/RX Status '
win_title += version
left_PTT_pin = 12
right_PTT_pin = 23
class StatusWindow:
poll_interval = 100
def __init__(self, left_PTT_pin, right_PTT_pin):
self.left_PTT_pin = left_PTT_pin
self.right_PTT_pin = right_PTT_pin
self.tkroot = Tkinter.Tk()
labelFont = tkFont.Font(family = 'Helvetica', size = 18, weight = 'bold')
buttonFont = tkFont.Font(family = 'Helvetica', size = 14)
self.tkroot.geometry("400x160")
self.tkroot.title(win_title)
self.set_up_GPIO()
if GPIO.input(self.left_PTT_pin):
self.leftRadioStatus = Tkinter.Label(self.tkroot, text="Left Radio\nTX", font=labelFont,
bg="blue", fg="yellow")
else:
self.leftRadioStatus = Tkinter.Label(self.tkroot, text="Left Radio\nRX", font=labelFont,
bg="green", fg="yellow")
self.leftRadioStatus.pack(padx=10, pady=5, side=Tkinter.LEFT, expand=True, fill=Tkinter.X)
if GPIO.input(self.right_PTT_pin):
self.leftRadioStatus = Tkinter.Label(self.tkroot, text="Right Radio\nTX", font=labelFont,
bg="red", fg="yellow")
else:
self.rightRadioStatus = Tkinter.Label(self.tkroot, text="Right Radio\nRX", font=labelFont,
bg="green", fg="yellow")
self.rightRadioStatus.pack(padx=10, pady=5, side=Tkinter.RIGHT, expand=True, fill=Tkinter.X)
self.exitButton = Tkinter.Button(self.tkroot, text="Quit", command=self.exit,
font=buttonFont, relief="raised")
self.exitButton.pack(padx=10, pady=5, side=Tkinter.BOTTOM)
self.tkroot.after(self.poll_interval, self.status_handler)
def set_up_GPIO(self):
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(self.left_PTT_pin, GPIO.OUT)
GPIO.setup(self.right_PTT_pin, GPIO.OUT)
def exit(self):
self.tkroot.destroy()
GPIO.cleanup()
def mainloop(self):
self.tkroot.mainloop()
def status_handler(self):
if GPIO.input(self.left_PTT_pin):
self.leftRadioStatus.configure(text="Left Radio\nTX", bg="blue")
else:
self.leftRadioStatus.config(text="Left Radio\nRX", bg="green")
if GPIO.input(self.right_PTT_pin):
self.rightRadioStatus.configure(text="Right Radio\nTX", bg="red")
else:
self.rightRadioStatus.config(text="Right Radio\nRX", bg="green")
self.tkroot.after(self.poll_interval, self.status_handler)
if __name__ == '__main__':
win = StatusWindow(left_PTT_pin, right_PTT_pin)
win.mainloop()