connected main program
This commit is contained in:
parent
f54e0d2fdb
commit
e1474b162c
1 changed files with 57 additions and 43 deletions
|
|
@ -6,6 +6,7 @@ import serial
|
||||||
import time
|
import time
|
||||||
import platform
|
import platform
|
||||||
import sys
|
import sys
|
||||||
|
import threading
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import tkinter
|
import tkinter
|
||||||
from GAME_METHODS import *
|
from GAME_METHODS import *
|
||||||
|
|
@ -27,6 +28,7 @@ FORZA_UDP_PORT= 4843
|
||||||
SERIAL_PORT = ""
|
SERIAL_PORT = ""
|
||||||
firstRun= True #used to do the headers for csv files
|
firstRun= True #used to do the headers for csv files
|
||||||
pushingToArduino = False
|
pushingToArduino = False
|
||||||
|
stopThread = False
|
||||||
|
|
||||||
class GameType(Enum):
|
class GameType(Enum):
|
||||||
NONE=0
|
NONE=0
|
||||||
|
|
@ -38,11 +40,11 @@ class ProgramState(Enum):
|
||||||
WAITNG = 2
|
WAITNG = 2
|
||||||
ERROR = 3
|
ERROR = 3
|
||||||
|
|
||||||
|
appState =ProgramState.WAITNG
|
||||||
connectedArduino = False
|
connectedArduino = False
|
||||||
connectedWebSocket = False
|
connectedWebSocket = False
|
||||||
gameSelected = False
|
gameSelected = False
|
||||||
portToConnect= 0
|
portToConnect= 0
|
||||||
gameType= GameType.NONE
|
|
||||||
carData = 0
|
carData = 0
|
||||||
csvOut = False
|
csvOut = False
|
||||||
|
|
||||||
|
|
@ -58,6 +60,46 @@ def csvWriteOut(firstRun,carData,csvFile):
|
||||||
outString = outString + str(num) +","
|
outString = outString + str(num) +","
|
||||||
csvFile.write(outString+"\n")
|
csvFile.write(outString+"\n")
|
||||||
|
|
||||||
|
def runningThread():
|
||||||
|
global stopThread
|
||||||
|
#check everything is connected
|
||||||
|
try:
|
||||||
|
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
|
||||||
|
sock.bind((UDP_IP,portToConnect))
|
||||||
|
except:
|
||||||
|
print("please check you are able to open the socket on this system\ntired to open port: "+portToConnect)
|
||||||
|
exit()
|
||||||
|
|
||||||
|
try:
|
||||||
|
toPi=serial.Serial(SERIAL_PORT,115200,timeout=2) #connect to arduino
|
||||||
|
except:
|
||||||
|
print("please check connection to arduino and verify the correct serial port")
|
||||||
|
exit()
|
||||||
|
|
||||||
|
gameType= tkGametype.get()
|
||||||
|
|
||||||
|
while not stopThread:
|
||||||
|
data, addr = sock.recvfrom(1024)
|
||||||
|
if gameType == GameType.BEAMNG.value:
|
||||||
|
unpackedData = struct.unpack(BEAMNG_METHODS.BEAMNG_DATA_FORMAT,data)
|
||||||
|
carData = BEAMNG_METHODS.unpackData(unpackedData)
|
||||||
|
kmh=carData["speed"]*3.6
|
||||||
|
if csvOut == True:
|
||||||
|
csvWriteOut(firstRun,carData,csvFile)
|
||||||
|
firstRun=False
|
||||||
|
elif gameType == GameType.FORZA.value:
|
||||||
|
unpackedData = struct.unpack(FORZA_METHODS.FORZA_DATA_FORMAT,data)
|
||||||
|
carData = FORZA_METHODS.unpackData(unpackedData)
|
||||||
|
kmh = carData["Speed"]*3.6
|
||||||
|
if csvOut == True:
|
||||||
|
csvWriteOut(firstRun,carData,csvFile)
|
||||||
|
firstRun=False
|
||||||
|
try:
|
||||||
|
toPi.write(str(kmh).encode()+":".encode())
|
||||||
|
except:
|
||||||
|
print("arduino disconnected please check connection\n")
|
||||||
|
|
||||||
|
|
||||||
#code runs from here<-----------------------------------------------------------------------------------------------------------
|
#code runs from here<-----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if runningOs == 'Windows':
|
if runningOs == 'Windows':
|
||||||
|
|
@ -71,13 +113,20 @@ else:
|
||||||
SERIAL_PORT = 'COM5'
|
SERIAL_PORT = 'COM5'
|
||||||
|
|
||||||
def startStopButtonFunc():
|
def startStopButtonFunc():
|
||||||
global pushingToArduino
|
global appState
|
||||||
if pushingToArduino == True:
|
if appState == ProgramState.WAITNG:
|
||||||
startStopButton.config(text="start")
|
startStopButton.config(text="start")
|
||||||
pushingToArduino = False
|
appState = ProgramState.PUSHING_DATA
|
||||||
elif pushingToArduino == False:
|
stopThread=False
|
||||||
|
workThread = threading.Thread(target=runningThread)
|
||||||
|
workThread.start()
|
||||||
|
statusTextVar.set("Waiting...")
|
||||||
|
|
||||||
|
elif appState == ProgramState.PUSHING_DATA:
|
||||||
startStopButton.config(text="stop")
|
startStopButton.config(text="stop")
|
||||||
pushingToArduino = True
|
appState = ProgramState.WAITNG
|
||||||
|
statusTextVar.set("Running...")
|
||||||
|
stopThread = True
|
||||||
|
|
||||||
##GUI init
|
##GUI init
|
||||||
rootFrameGui= tkinter.Tk()
|
rootFrameGui= tkinter.Tk()
|
||||||
|
|
@ -159,23 +208,7 @@ while gameSelected == False:
|
||||||
else:
|
else:
|
||||||
print("please select a number from the list")
|
print("please select a number from the list")
|
||||||
|
|
||||||
#check everything is connected
|
|
||||||
while connectedWebSocket == False:
|
|
||||||
try:
|
|
||||||
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
|
|
||||||
sock.bind((UDP_IP,portToConnect))
|
|
||||||
connectedWebSocket = True
|
|
||||||
except:
|
|
||||||
print("please check you are able to open the socket on this system\ntired to open port: "+portToConnect)
|
|
||||||
exit()
|
|
||||||
|
|
||||||
while connectedArduino == False:
|
|
||||||
try:
|
|
||||||
toPi=serial.Serial(SERIAL_PORT,115200,timeout=2) #connect to arduino
|
|
||||||
connectedArduino = True
|
|
||||||
except:
|
|
||||||
print("please check connection to arduino and verify the correct serial port")
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
if csvOut == True:
|
if csvOut == True:
|
||||||
csvFile = open(gameType.value+"_"+str(int(time.time()))+'.csv',"a")
|
csvFile = open(gameType.value+"_"+str(int(time.time()))+'.csv',"a")
|
||||||
|
|
@ -183,24 +216,5 @@ if csvOut == True:
|
||||||
|
|
||||||
|
|
||||||
print("ready:\n")
|
print("ready:\n")
|
||||||
while True:
|
|
||||||
data, addr = sock.recvfrom(1024)
|
|
||||||
if gameType == GameType.BEAMNG:
|
|
||||||
unpackedData = struct.unpack(BEAMNG_METHODS.BEAMNG_DATA_FORMAT,data)
|
|
||||||
carData = BEAMNG_METHODS.unpackData(unpackedData)
|
|
||||||
kmh=carData["speed"]*3.6
|
|
||||||
if csvOut == True:
|
|
||||||
csvWriteOut(firstRun,carData,csvFile)
|
|
||||||
firstRun=False
|
|
||||||
elif gameType == GameType.FORZA:
|
|
||||||
unpackedData = struct.unpack(FORZA_METHODS.FORZA_DATA_FORMAT,data)
|
|
||||||
carData = FORZA_METHODS.unpackData(unpackedData)
|
|
||||||
kmh = carData["Speed"]*3.6
|
|
||||||
if csvOut == True:
|
|
||||||
csvWriteOut(firstRun,carData,csvFile)
|
|
||||||
firstRun=False
|
|
||||||
try:
|
|
||||||
toPi.write(str(kmh).encode()+":".encode())
|
|
||||||
except:
|
|
||||||
print("arduino disconnected please check connection\n")
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue