AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

Ein Thema von bernau · begonnen am 25. Sep 2020 · letzter Beitrag vom 26. Sep 2020
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.158 Beiträge
 
Delphi 10.3 Rio
 
#1

Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

  Alt 25. Sep 2020, 00:43
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
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.407 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

  Alt 25. Sep 2020, 06:27
weia - danke für den Hinweis!
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.158 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

  Alt 25. Sep 2020, 12:30
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
482 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Swissbit TSE - Kurzzeitiges Entfernen der TSE wird nicht erkannt

  Alt 26. Sep 2020, 16:48
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.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf