Compare commits

..

8 Commits

Author SHA1 Message Date
8f0661a73d wip 2024-11-17 21:26:32 +13:00
df6e27783e have two panes for ui 2024-11-15 17:37:03 +13:00
ac60af82a0 attempting to layer frames 2024-11-15 17:31:58 +13:00
f085cd8e8b made game select buttons look pretty 2024-11-15 15:17:55 +13:00
ceb2f538b8 radio buttons "work" 2024-11-15 15:06:31 +13:00
aa96a3b3c2 working on radio buttons 2024-11-14 23:07:13 +13:00
3f6aedffbc added serial selection screen 2024-11-14 22:34:55 +13:00
c6cd1c0b99 started branch that has a GUI interface vs text console has base window 2024-11-14 21:53:21 +13:00

View File

@@ -1,11 +1,13 @@
#please use python 3.11
import socket
import struct
import tkinter.ttk
import serial
import time
import platform
import sys
from enum import Enum
import tkinter
from GAME_METHODS import *
##check if python 3.11 is running code and exit if not
@@ -13,9 +15,12 @@ from GAME_METHODS import *
if not(sys.version_info[0] == 3 and sys.version_info[1] == 11):
raise Exception("code must be run in python verion 3.11.\ninput struct for network needs to be changed per python version.")
##system init
runningOs = platform.system()
UDP_IP = "0.0.0.0"
UDP_IP = "127.0.0.1"
BEAMNG_UDP_PORT = 4444
FORZA_UDP_PORT= 4843
SERIAL_PORT = ""
@@ -58,6 +63,46 @@ else:
print("OS detection failed setting serial port to 'COM5'\n")
SERIAL_PORT = 'COM5'
##GUI init
rootFrameGui= tkinter.Tk()
rootFrameGui.title("Car speed to arduino")
rootFrameGui.geometry("400x200")
firstFrameGui=tkinter.ttk.Frame(rootFrameGui,padding=2,relief="groove",borderwidth=2)
firstFrameGui.pack(anchor="ne",side="left",expand=True)
secondFrameGui=tkinter.ttk.Frame(rootFrameGui,padding=2,relief="groove",borderwidth=2)
secondFrameGui.pack(anchor="nw",side="right",expand=True)
serialFrameGui = tkinter.ttk.Frame(firstFrameGui,padding=5,relief="groove",borderwidth=2)
serialFrameGui.pack(anchor="nw")
serialLableText =tkinter.StringVar()
serialLableText.set("Serial Port:")
serialLable = tkinter.Label(serialFrameGui,textvariable=serialLableText)
serialLable.pack(side="top")
serialEntry=tkinter.Entry(serialFrameGui)
serialEntry.insert(0,SERIAL_PORT)
serialEntry.pack(side="left")
tkGametype = tkinter.StringVar()
tkGametype.set(GameType.BEAMNG.value)
gameSelectFrame= tkinter.ttk.Frame(secondFrameGui,padding=5,relief="groove",borderwidth=2)
gameSelectFrame.pack(anchor="se")
gameSelectText= tkinter.StringVar()
gameSelectText.set("Select Game:")
gameSelectLable = tkinter.Label(gameSelectFrame,textvariable=gameSelectText)
gameSelectLable.pack(side="top")
tkinter.Label(gameSelectFrame,textvariable=gameSelectText)
gameSelectLOptions= [GameType.BEAMNG,GameType.FORZA]
##gameSelectRadioButtons
##space after text is so the buttons are the same size
tkinter.Radiobutton(gameSelectFrame,text="BeamNG ",variable=tkGametype,value=GameType.BEAMNG.value).pack(anchor="w")
tkinter.Radiobutton(gameSelectFrame,text="Forza ",variable=tkGametype,value=GameType.FORZA.value).pack(anchor="w")
loggingFrameGui= tkinter.ttk.Frame(firstFrameGui,padding=5,relief="groove",borderwidth=2)
loggingFrameGui.pack(anchor="nw")
tkLoggingEnabled=tkinter.BooleanVar()
tkLoggingEnabled.set(False)
tkinter.Checkbutton(loggingFrameGui,text="Enable Logging",variable=tkLoggingEnabled,onvalue=True,offvalue=False).pack(side="bottom")
rootFrameGui.mainloop()
##exit() #### exit for testing
#select game
while gameSelected == False:
gameNo = input("1:BEAMNG\n2:FORZA\n\n7:Toggle CSV out ("+str(csvOut)+")\n9:SET SERIAL PORT ("+SERIAL_PORT+")\n")