Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt (https://www.delphipraxis.net/205573-swissbit-tse-kurzzeitiges-entfernen-der-tse-wird-nicht-erkannt.html)

bernau 24. Sep 2020 23:43

Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
Mir ist ein Phänomen aufgefallen, welches ich euch nicht vorenthalten möchte.

Bei drei meiner Kunden tritt regelmäßig ein Fehler auf, den ich versucht habe einzugrenzen. Beim Kassieren, wenn die Funktion "worm_transaction_finish" aufgerufen wird, erhalte ich in unregelmäßigen Abständen bei diesen Kunden den Fehler "WORM_ERROR_IO".

Zuerst dachte ich defekte TSE. Denn bei fast allen Kunden funktioniert die Software. Nur nicht bei diesen drei. Ich habe mir dann die Hardware der Kunden angeben lassen. Auffallend ist, dass alle die TSE in einem Laptop verwenden. Mein erster Gedanke war "Stromsparmodus". Bei allen Geräten habe ich den Stromsparmodus ausgeschaltet. Siehe da. Der Fehler war bei zwei Computern weg. Bei einem wurde es weniger. Anscheinend hat der Stromsparmodus die TSE kurzzeitig ausgeworfen und wieder aktiviert.

Ich habe etwas weiter im Programm nachgeschaut und versucht den Fehler zu provozieren, in dem ich die TSE einfach entfernt habe und wieder eingesteckt habe. Ich frage regelmäßig die Restzeit bis zum nächsten Selbsttest ab und ob der Selbsttest durchgeführt wurde. Witzigerweise wurden mir bei den Funktionen "worm_info_hasPassedSelfTest" und worm_info_timeUntilNextSelfTest gültige werte angegeben. hasPassedSelfTest war true, obwohl dieser eigentlich false sein müsste, denn die TSE wurde ja kurz herausgezogen und wieder eingesteckt. Damit ist ja zwingend ein Selbsttest vorgeschrieben.

Ich habe nach einiger Zeit herausgefunden, dass ein neuer WormContext korrekte Werte liefert. Der alte WormContext hat aber bei allen Funktionen Werte geliefert, denen man nicht ansieht, dass diese falsch sind und eine Exception wurde nicht ausgelößt.

Das bedeutet im Umkehrschluss, einen WormContext sollte man so kurz wie möglich offen halten, denn man weis nicht wirklich wie lange dieser gültig ist. Eine Funktion der die Gültigkeit eines WormContext angibt, gibt es eigentlich nicht.

Vielleicht hilft dem einen oder anderen diese Info

Daniel 25. Sep 2020 05:27

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
weia - danke für den Hinweis!

bernau 25. Sep 2020 11:30

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
Bei meinen Kunden wird nicht so oft kassiert. Alle 30 Min mal. Auch wenn ich jetzt herausgefunden habe, das der WormContext ungültigt wird und dieser einfach erneuert werden muss, bleibt das Problem, dass die TSE kurzzeitig entfernt wird. Mit neuem WormContext wird mir zwar nun angezeigt, dass ein Selbsttest durchgeführt werden muss. Aber das ist ja nervig, dass vor jedem Kassieren erst mal der Selbsttest durchgeführt wird.

Ich schreibe nun regelmässig eine leere Datei auf die TSE um ein auswerfen der TSE nach Leerlauf zu vermeiden. Vielleicht bring es was.

Neumann 26. Sep 2020 15:48

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
Das habe ich auch schon festgestellt, dass teilweise merkwürdige Werte von der TSE kommen. Beispiel: Ist das Intervall für Settime abgelaufen, liefert TimetoNextSelftest 90000 Sekunden, als wenn der Selbsttest gerade gemacht worden wäre.

Ich logge jetzt alles mit Start, Stop Transaction, Settime, Selftest usw. Das hat mir geholfen die letzten Fehler zu finden. Ich kenne die genaue Zahl, nicht, aber wir haben inzwischen sicher mehr als 200 TSE ausgeliefert die alle im Dauerbetrieb sind, für Kassen im Verbund haben wir eine Serveranwendung entwickelt.

Inzwischen läuft das Ganze weitgehend störungsfrei, aber hat etwas gedauert.

tkhandel 29. Nov 2023 21:36

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
Ist zwar ein altes Thema aber diese Probleme haben wir mit unseren mobilen
Kassen ständig.
Wir setzen Windows Tablets (10,1") als mobile Kassenlösung
ein, es werden pro Tag meistens unter 50 Verkäufe im Lieferservice absolviert
ich muss die Tablets immer unter Volllast laufen lassen damit die TSE aktiv bleibt.
Langsam gehen uns die bezahlbaren Ruggedtablets mit Windows aus die funktionieren.

bernau 30. Nov 2023 18:52

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
SD-Card oder USB-Stick?

Was heißt " immer unter Volllast laufen lassen".

Verwendest du "worm_keepalive_configure"?

tkhandel 30. Nov 2023 20:33

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
nein habe ich nicht verwendet, ich habe alles mögliche ausprobiert
es ist nur so das die Tablet im Akkubetrieb laufen müssen da sie immer
mit zum Kunden genommen werden. Jegliche Energiespareinstellung auch das
abschalten des Bildschirms reicht unter Windows um auch USB oder Cardreader
schlafen zu legen.
Hast du ein Beispiel für mich mich? vieleicht hab ich was übersehen.

bernau 30. Nov 2023 21:04

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt
 
Beispiel für "worm_keepalive_configure".

Schau mal hier:

https://www.delphipraxis.net/204986-...g-des-bmf.html


Im Quellcode danach suchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz