diff --git a/SW/PC/Stopwatch/registrace.py b/SW/PC/Stopwatch/registrace.py
index b758318..8dd75cb 100644
--- a/SW/PC/Stopwatch/registrace.py
+++ b/SW/PC/Stopwatch/registrace.py
@@ -45,9 +45,9 @@ def register_racer():
index = window.racers.currentIndex()
racer_id = int(index.data().split(' ')[-1])
try:
- starting_number = int(window.starting_number.text())
- except Exception:
- raise
+ starting_number = max(filter(lambda r: r['starting_number'], racers), key=lambda racer: racer['starting_number'])['starting_number'] + 1
+ except ValueError:
+ starting_number = 1
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:
@@ -55,50 +55,21 @@ def register_racer():
mb.exec()
return
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()
return
racer = list(filter(lambda x: x['racer_id'] == racer_id, racers))[0]
racer['card_id'] = card_id
racer['starting_number'] = starting_number
+ racer['started'] = False
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()
-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.register_racer.clicked.connect(register_racer)
-window.unregister_racer.clicked.connect(unregister_racer)
window.show()
@@ -117,8 +88,50 @@ def updateRacers():
updateRacers()
+def findByCard(card_id):
+ for racer in racers:
+ if racer['card_id'] == card_id:
+ return racer
+
+
def updateLastCard(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():
@@ -153,10 +166,10 @@ class UsbCardReader():
receivedNumber = 10 * receivedNumber + receivedDigit
if (( control[0] == 0 )) & (( control[2] == 40 )) & (( not receivedNumber == 0 )):
- updateLastCard(receivedNumber)
- if last_card != receivedNumber:
+ if last_card != receivedNumber or datetime.datetime.now() - last_time > datetime.timedelta(seconds=10):
+ updateLastCard(receivedNumber)
last_time = datetime.datetime.now()
- last_card = receivedNumber
+ last_card = receivedNumber
receivedNumber = 0
except KeyboardInterrupt:
diff --git a/SW/PC/Stopwatch/registrace.ui b/SW/PC/Stopwatch/registrace.ui
index 190b48a..f85230e 100644
--- a/SW/PC/Stopwatch/registrace.ui
+++ b/SW/PC/Stopwatch/registrace.ui
@@ -14,9 +14,6 @@
Registrace závodníků
- -
-
-
-
@@ -24,31 +21,17 @@
- -
-
-
- Dokončit
-
-
-
-
-
+
-
-
-
- startovní číslo
-
-
-
- -
číslo karty
- -
+
-
Qt::Vertical
@@ -61,7 +44,7 @@
- -
+
-