mirror of
https://github.com/AG7GN/nexus-utilities.git
synced 2025-05-16 06:30:09 -07:00
89 lines
2.9 KiB
Python
Executable File
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()
|
|
|