import socket
import time
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys
speedF=0
speedR=0
motorStatus='O'
# Set up UDP client
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.settimeout(1)
server_address = ('192.168.88.19', 12345) # Adjust IP address and port as needed
app=QApplication(sys.argv)
window=QWidget()
window.setWindowTitle("Big Boss Motor Controller")
window.setGeometry(100,100,800,600)
mainLayout=QHBoxLayout(window)
leftLayout=QVBoxLayout()
rightLayout=QVBoxLayout()
def updateMotor():
global motorStatus,speedF,speedR
try:
print(motorStatus)
if motorStatus=='F':
cmd=motorStatus+','+str(speedF)
if motorStatus=='R':
cmd=motorStatus+','+str(speedR)
if motorStatus=='O':
cmd=motorStatus+','+str(0)
client_socket.sendto(cmd.encode(), server_address)
data, addr = client_socket.recvfrom(1024)
print('Received data:', data.decode())
except:
print("Server Did Not Respond, Try Again")
def updateForSpeed(value):
global speedF
speedF=value
print(speedF)
def updateRevSpeed(value):
global speedR
speedR=value
print(speedR)
def motorGo():
global motorStatus
motorStatus = 'F'
print("GO")
def motorRev():
global motorStatus
motorStatus = 'R'
print("REV")
def motorStop():
global motorStatus
motorStatus = 'O'
print("STOP")
sliderLabelF=QLabel("Forward Speed")
sliderLabelF.setStyleSheet("font-size: 20px;")
leftLayout.addWidget(sliderLabelF)
sliderF=QSlider(Qt.Vertical)
sliderF.setMinimum(0)
sliderF.setMaximum(100)
sliderF.setValue(0)
sliderF.valueChanged.connect(updateForSpeed)
sliderF.setStyleSheet("QSlider::handle:vertical {background-color: rgb(0,255,0);}")
leftLayout.addWidget(sliderF)
sliderLabelR=QLabel("Forward Speed")
sliderLabelR.setStyleSheet("font-size: 20px;")
leftLayout.addWidget(sliderLabelR)
sliderR=QSlider(Qt.Vertical)
sliderR.setMinimum(0)
sliderR.setMaximum(100)
sliderR.setValue(0)
sliderR.valueChanged.connect(updateRevSpeed)
sliderR.setStyleSheet("QSlider::handle:vertical {background-color: rgb(0,0,255);}")
leftLayout.addWidget(sliderR)
greenButton=QPushButton("GO")
greenButton.setStyleSheet("background-color: rgb(0,255,0); border-radius: 50px; min-height: 100px; font-size: 20px; color: black;")
blueButton=QPushButton("REVERSE")
blueButton.setStyleSheet("background-color: rgb(0,0,255); border-radius: 50px; min-height: 100px; font-size: 20px; color: white;")
redButton=QPushButton("STOP")
redButton.setStyleSheet("background-color: rgb(255,0,0); border-radius: 50px; min-height: 100px; font-size: 20px; color: black;")
greenButton.clicked.connect(motorGo)
rightLayout.addWidget(greenButton)
blueButton.clicked.connect(motorRev)
rightLayout.addWidget(blueButton)
redButton.clicked.connect(motorStop)
rightLayout.addWidget(redButton)
timer =QTimer()
timer.timeout.connect(updateMotor)
timer.start(200)
mainLayout.addLayout(leftLayout)
mainLayout.addLayout(rightLayout)
window.setLayout(mainLayout)
window.show()
sys.exit(app.exec_())