318 lines
8.0 KiB
Python
318 lines
8.0 KiB
Python
|
|
import kivy
|
|
import time
|
|
|
|
from kivy.app import App
|
|
from kivy.uix.boxlayout import BoxLayout
|
|
from kivy.uix.label import Label
|
|
from kivy.clock import Clock
|
|
from kivy.lang import Builder
|
|
from kivy.properties import StringProperty
|
|
from kivy.core.window import Window
|
|
from kivy.config import Config
|
|
|
|
from tkinter import filedialog
|
|
from tkinter import simpledialog
|
|
from KivyOnTop import register_topmost, unregister_topmost
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
from tkinter import *
|
|
import configparser
|
|
|
|
|
|
#Configuration loading
|
|
config = configparser.ConfigParser()
|
|
config.read("Configuration.ini")
|
|
|
|
# Accessing variables from the 'GENERAL' section
|
|
folder_selected = str(config['GENERAL']['ControlConfigDirectory'])
|
|
Court_name = str(config['GENERAL']['CourtName'])
|
|
|
|
if folder_selected == "\\\\0.0.0.0\\ExecutorShare\Working\Tennis\TennisBallTrackControl\TennisBallTrackControl1\ControlConfig.json":
|
|
print(chr(27) + "[2J")
|
|
print("##################################################")
|
|
print("You have not changed the default Configuration.ini")
|
|
print("Please change the IP")
|
|
print("##################################################")
|
|
input()
|
|
exit()
|
|
|
|
|
|
print("Control Config Directory: " + folder_selected)
|
|
print("Court Name: " + Court_name)
|
|
|
|
filePath = (folder_selected)
|
|
|
|
# Accessing variables from the 'THRESHOLDS' section
|
|
Thresh1 = float(config['THRESHOLDS']['Thresh1'])
|
|
Thresh2 = float(config['THRESHOLDS']['Thresh2'])
|
|
Thresh3 = float(config['THRESHOLDS']['Thresh3'])
|
|
Thresh4 = float(config['THRESHOLDS']['Thresh4'])
|
|
Thresh5 = float(config['THRESHOLDS']['Thresh5'])
|
|
Thresh6 = float(config['THRESHOLDS']['Thresh6'])
|
|
|
|
|
|
|
|
root = Tk()
|
|
root.withdraw()
|
|
|
|
|
|
Builder.load_string("""
|
|
<MySec>:
|
|
rgba: (1,.2,.2,.2)
|
|
orientation: 'vertical'
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .1)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: Court_name
|
|
text: root.Court_name
|
|
font_size: 30
|
|
size_hint: (1, 1)
|
|
bold: True
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .05)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: Positive_text
|
|
text: 'Far'
|
|
font_size: 15
|
|
size_hint: (1, 1)
|
|
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .35)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: Positive
|
|
text: root.Positive
|
|
font_size: 80
|
|
size_hint: (1, 1)
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .05)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: Negative_text
|
|
text: 'Near'
|
|
font_size: 15
|
|
size_hint: (1, 1)
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .35)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: Negative
|
|
text: root.Negative
|
|
font_size: 80
|
|
size_hint: (1, 1)
|
|
|
|
|
|
|
|
BoxLayout:
|
|
size_hint: (1, .1)
|
|
canvas.before:
|
|
Color:
|
|
rgba: root.rgba
|
|
Rectangle:
|
|
size: self.size
|
|
pos: self.pos
|
|
|
|
Label:
|
|
id: info
|
|
text: root.info
|
|
font_size: 30
|
|
size_hint: (1, 1)
|
|
bold: True
|
|
""")
|
|
Window.size = (300, 300)
|
|
|
|
|
|
def read_5th_line(filename,num):
|
|
with open(filename, 'r') as file:
|
|
lines = file.readlines()
|
|
if len(lines) >= 5:
|
|
fifth_line = lines[num].strip() # Index 4 represents the 5th line (0-based indexing)
|
|
return fifth_line
|
|
else:
|
|
return None
|
|
|
|
|
|
|
|
class MySec(BoxLayout):
|
|
Positive = StringProperty('')
|
|
info = StringProperty('')
|
|
Negative = StringProperty('')
|
|
Court_name = StringProperty('')
|
|
Config.set('kivy','window_icon','./Sunny.ico')
|
|
Config.set('graphics', 'always_on_top','1')
|
|
#Config.set('graphics','position', 'custom' )
|
|
Config.set('graphics','left',10)
|
|
Config.set('graphics','top',50)
|
|
Config.set('graphics','height',300)
|
|
Config.set('graphics','width',300)
|
|
Config.write()
|
|
|
|
|
|
|
|
|
|
|
|
class MyApp(App):
|
|
def build(self):
|
|
self.title = 'Sunny V1.1'
|
|
|
|
|
|
Clock.schedule_interval(lambda dt: self.update_time(), 5)
|
|
|
|
return MySec()
|
|
|
|
def update_time(self):
|
|
|
|
self.root.Court_name = Court_name
|
|
with open(filePath,'r') as f:
|
|
line_5 = read_5th_line(filePath,4)
|
|
print(datetime.now())
|
|
|
|
if line_5 == '"sunStrengthLinkBoth" : true,':
|
|
print('Sun Strength Linked')
|
|
self.root.info = 'Linked'
|
|
elif line_5 == '"sunStrengthLinkBoth" : false,':
|
|
print('Sun Strength NOT Linked')
|
|
self.root.info = 'NOT Linked'
|
|
else:
|
|
print("Error: Cant see if Sun Strength is Linked")
|
|
self.root.info = 'Error'
|
|
line_6 = read_5th_line(filePath,5)
|
|
XNeg = line_6.find('sunStrengthNegX')
|
|
XNeg = float(line_6[XNeg+19:XNeg+22])
|
|
print(XNeg)
|
|
|
|
line_7 = read_5th_line(filePath,6)
|
|
XPos = line_7.find('sunStrengthPosX')
|
|
XPos = float(line_7[XPos+19:XPos+22])
|
|
print(XPos)
|
|
print('\n')
|
|
Average = (XNeg + XPos)/2
|
|
Average = round(Average,1)
|
|
|
|
|
|
|
|
if Average == Thresh1:
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 10/255, 10/255, 1.0]
|
|
|
|
elif Average <= Thresh2:
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 58/255, 71/255, 1.0]
|
|
|
|
|
|
|
|
elif ((Average > Thresh2) and (Average <= Thresh3)):
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 79/255, 97/255, 1.0]
|
|
|
|
|
|
|
|
elif ((Average > Thresh3) and (Average <= Thresh4)):
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 117/255, 143/255, 1.0]
|
|
|
|
|
|
|
|
elif ((Average > Thresh4) and (Average <= Thresh5)):
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 157/255, 192/255, 1.0]
|
|
|
|
|
|
|
|
|
|
elif Average >= Thresh6:
|
|
XNeg = str(XNeg)
|
|
XPos = str(XPos)
|
|
self.root.Negative = XNeg
|
|
self.root.Positive = XPos
|
|
self.root.rgba = [0/255, 208/255, 255/255, 1.0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
MyApp().run()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|