more autonomous

This commit is contained in:
Martin Quarda 2025-03-28 10:41:17 +01:00
parent 9deda461ee
commit 2221f5b39d
2 changed files with 54 additions and 58 deletions

View File

@ -45,9 +45,9 @@ def register_racer():
index = window.racers.currentIndex() index = window.racers.currentIndex()
racer_id = int(index.data().split(' ')[-1]) racer_id = int(index.data().split(' ')[-1])
try: try:
starting_number = int(window.starting_number.text()) starting_number = max(filter(lambda r: r['starting_number'], racers), key=lambda racer: racer['starting_number'])['starting_number'] + 1
except Exception: except ValueError:
raise starting_number = 1
response = session.post(config['host'] + '/api/card/register', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id}) response = session.post(config['host'] + '/api/card/register', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id})
if response.status_code == 400: if response.status_code == 400:
@ -55,50 +55,21 @@ def register_racer():
mb.exec() mb.exec()
return return
if response.status_code != 200: if response.status_code != 200:
mb = QtWidgets.QMessageBox(text="Neznámá chyba!") mb = QtWidgets.QMessageBox(text=f"Neznámá chyba! {response.status_code} {response.content}")
mb.exec() mb.exec()
return return
racer = list(filter(lambda x: x['racer_id'] == racer_id, racers))[0] racer = list(filter(lambda x: x['racer_id'] == racer_id, racers))[0]
racer['card_id'] = card_id racer['card_id'] = card_id
racer['starting_number'] = starting_number racer['starting_number'] = starting_number
racer['started'] = False
updateRacers() updateRacers()
mb = QtWidgets.QMessageBox(text="Úspěšné zaregistrování závodníka!") mb = QtWidgets.QMessageBox(text=f"Úspěšné zaregistrování závodníka se startovním číslem {starting_number}!")
mb.exec() mb.exec()
def unregister_racer():
card_id = last_card
time = last_time
response = session.post(config['host'] + '/api/station/register', json={'card_id': card_id, 'time': time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': config['station_id']})
if response != 200:
mb = QtWidgets.QMessageBox(text="Selhalo zapsání na Stanici!")
mb.exec()
return
racer = list(filter(lambda x: x['card_id'] == card_id, racers))[0]
starting_number = racer['starting_number']
racer_id = racer['racer_id']
racer['card_id'] = None
response = session.post(config['host'] + '/api/card/unregister', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id})
if response.status_code != 200:
mb = QtWidgets.QMessageBox(text="Registrace na stanici proběhla úspěšně, ale karta nebyla odhlášena!")
mb.exec()
return
json = response.json()
mb = QtWidgets.QMessageBox(text=f"Úspěšné odhlášení závodníka! Finální čas je: {json['time']}")
mb.exec()
window = uic.loadUi("registrace.ui") window = uic.loadUi("registrace.ui")
window.register_racer.clicked.connect(register_racer) window.register_racer.clicked.connect(register_racer)
window.unregister_racer.clicked.connect(unregister_racer)
window.show() window.show()
@ -117,8 +88,50 @@ def updateRacers():
updateRacers() updateRacers()
def findByCard(card_id):
for racer in racers:
if racer['card_id'] == card_id:
return racer
def updateLastCard(card_id): def updateLastCard(card_id):
window.lastCard.setText(str(card_id)) window.lastCard.setText(str(card_id))
time = last_time
racer = findByCard(card_id)
if racer:
if racer['started']:
response = session.post(config['host'] + '/api/station/register', json={'card_id': card_id, 'time': time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 6})
if response != 200:
mb = QtWidgets.QMessageBox(text="Selhalo zapsání na Stanici!")
mb.exec()
return
racer = list(filter(lambda x: x['card_id'] == card_id, racers))[0]
starting_number = racer['starting_number']
racer_id = racer['racer_id']
racer['card_id'] = None
response = session.post(config['host'] + '/api/card/unregister', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id})
if response.status_code != 200:
mb = QtWidgets.QMessageBox(text="Registrace na stanici proběhla úspěšně, ale karta nebyla odhlášena!")
mb.exec()
return
json = response.json()
mb = QtWidgets.QMessageBox(text=f"Úspěšné odhlášení závodníka! Finální čas je: {json['time']}")
mb.exec()
else:
response = session.post(config['host'] + '/api/station/register', json={'card_id': card_id, 'time': last_time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 1})
if response.status_code != 200:
mb = QtWidgets.QMessageBox(text="Nastala nějaká chyba na serveru!")
mb.exec()
return
mb = QtWidgets.QMessageBox(text=f"Úspěšné odstartování závodníka {racer['starting_number']}!")
mb.exec()
racer['started'] = True
class UsbCardReader(): class UsbCardReader():
@ -153,10 +166,10 @@ class UsbCardReader():
receivedNumber = 10 * receivedNumber + receivedDigit receivedNumber = 10 * receivedNumber + receivedDigit
if (( control[0] == 0 )) & (( control[2] == 40 )) & (( not receivedNumber == 0 )): if (( control[0] == 0 )) & (( control[2] == 40 )) & (( not receivedNumber == 0 )):
updateLastCard(receivedNumber) if last_card != receivedNumber or datetime.datetime.now() - last_time > datetime.timedelta(seconds=10):
if last_card != receivedNumber: updateLastCard(receivedNumber)
last_time = datetime.datetime.now() last_time = datetime.datetime.now()
last_card = receivedNumber last_card = receivedNumber
receivedNumber = 0 receivedNumber = 0
except KeyboardInterrupt: except KeyboardInterrupt:

View File

@ -14,9 +14,6 @@
<string>Registrace závodníků</string> <string>Registrace závodníků</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="5" column="0">
<widget class="QLineEdit" name="lastCard"/>
</item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QPushButton" name="register_racer"> <widget class="QPushButton" name="register_racer">
<property name="text"> <property name="text">
@ -24,31 +21,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0">
<widget class="QPushButton" name="unregister_racer">
<property name="text">
<string>Dokončit</string>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLineEdit" name="starting_number"/> <widget class="QLineEdit" name="lastCard"/>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>startovní číslo</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>číslo karty</string> <string>číslo karty</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="3" column="0">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -61,7 +44,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="0" column="1" rowspan="7"> <item row="0" column="1" rowspan="4">
<widget class="QListView" name="racers"/> <widget class="QListView" name="racers"/>
</item> </item>
</layout> </layout>