Hallo,
ich versuche gerade Transponder ID's mit dem USB-leser "Easyident-KM22-USB" zu erfassen.
Der Leser bringt eine virtuelle COM-Schnittstelle mit, sodass ich einfach mit der Funktion VISA lesen gearbeitet habe.
Mein Problem ist das die Funktion VISA-lesen ab und zu einen Fehler ( -1073807252 ) ausgibt, und ich nicht weis was ich damit anfangen soll. bzw. wie ich ihn abstellen kann.
Für Lösungs und/oder Verbesserungsvorschläge an meinem VI wäre ich sehr dankbar.
MFG
Stefan
[
attachment=30483]
Hallo Stefan,
schon mal die Fehlerbeschreibung dazu durchgelesen?
"VISA: (Hex 0xBFFF006C) Während der Übertragung ist ein Überlauffehler aufgetreten. Ein Zeichen wurde von der Hardware nicht gelesen, bevor das nächste Zeichen ankam."
Zitat:ab und zu einen Fehler ... ausgibt, und ich nicht weis was ich damit anfangen soll
Wenn nur "ab und zu" ein Fehler auftritt , kann man den ja programmatisch abfangen und den COM-Port zurücksetzen. Danach wie gehabt weitermachen...
Zu deinem VI:
- Schon mal den Aufräum-Knopf benutzt?
- Warum initialisiert du den COM-Port in jeder Iteration?
- Warum prüfst du auf 13 Zeichen? Gib doch einfach vor, nur 13 Zeichen lesen zu wollen... Außerdem wartest du doch eh schon auf ein Abschlußzeichen (aka TerminationChar), voreingestellt ist ein LF! Sendet der RFID-Leser etwas Messages unterschiedlicher Länge?
- Warum den String erst in der Länge begrenzen und dann in eine Zahl wandeln? Überschüssige Zeichen werden ignoriert...
- Den "error in" kann man direkt an den CaseSelector anschließen...
- Guck dir das "Basic Serial Read and Write"-Example mal an!
Hallo GerdW
Ja ich hab mir die Fehlerbeschreibung schon mal angesehen.
Die hat mich aber leider auch nicht weitergebracht.
Ja ok Aufräumknopf nicht benutzt meine schuld!!
- Warum initialisiert du den COM-Port in jeder Iteration?
keine ahnung
- Warum prüfst du auf 13 Zeichen? Gib doch einfach vor, nur 13 Zeichen lesen zu wollen... Außerdem wartest du doch eh schon auf ein Abschlußzeichen (aka TerminationChar), voreingestellt ist ein LF! Sendet der RFID-Leser etwas Messages unterschiedlicher Länge?
Es kommt vor dass der Leser, warum auch immer, mal ein paar zeichen weglässt. Die Zeichenläge meiner ID ist immer gleich.
- Warum den String erst in der Länge begrenzen und dann in eine Zahl wandeln? Überschüssige Zeichen werden ignoriert...
Ich will das zeichen ganz rechts abschneiden da es eine Prüfsumme ist.
- Den "error in" kann man direkt an den CaseSelector anschließen...
Ok danke das wusste ich leider noch nicht.
- Guck dir das "Basic Serial Read and Write"-Example mal an!
Hab ich gemacht dort tritt der gleiche fehler auf.
Ich hab herausgefunden wie ich den Fehler erzwingen kann.
Wenn ich meinen RFID-Chip an den leser halte bevor ich VISA-lesen ausführe kommt der Fehler zu 90%
zur Info
Mein Leser sendet kontinuirlich die ID solange der Chip drangehalten wird.
Hallo Stefan,
Zitat:VISA: (Hex 0xBFFF006C) Während der Übertragung ist ein Überlauffehler aufgetreten. Ein Zeichen wurde von der Hardware nicht gelesen, bevor das nächste Zeichen ankam.
Der Fehler sagt: der interne Buffer lief über - ein neu empfangenes Zeichen hat ein altes, noch nicht verarbeitetes überschrieben.
Zitat:Wenn ich meinen RFID-Chip an den leser halte bevor ich VISA-lesen ausführe kommt der Fehler zu 90%
Der Fehler tritt auf, wenn dein RFID-Leser munter Werte sendet, die du aber noch nicht verarbeitest.
Jetzt beides mal miteinander verknüpfen und dir dann einen anderen Programmablauf überlegen...
Alternative Ratschläge:
- Fehler abfangen und "löschen"
- Buffer regelmäßig leeren
So ich hab es jetzt nochmal anders versucht es funktioniert aber immer noch nicht richtig.
Könntest du mir bitte etwas auf die Sprünge helfen?
Danke
Gruß Stefan
[
attachment=30494]
Hallo Stefan,
ich kann mir Dein VI leider nicht ansehen. (kein LV2010)
Ich hoffe allerdings, daß Du als Grundgerüst für Dein VI des "Erzeuger-Verbraucher-Template" verwendest.
Damit kannst Du die Leseoperationen für den RFID-Leser in einer Schleife (Erzeuger) kontinuierlich durchführen und die RFID-Id über eine Queue in einer zweiten Schleife (Verbraucher) verarbeiten.
Damit sollte der Fehler zu beheben sein.
Grüße
Andreas
Bitte bei Uploads LV-Version angeben.
Hallo Stefan,
solange du keine Schleife verwendest, wirst du immer Probleme bekommen. Willst du jedesmal erst einen Knopf drücken/ein VI starten, wenn du eine RFID-Kennung in den Rechner lesen willst? Sowas sollte doch dauernd abgefragt werden... Dann muss man auch nicht dauernd den COM-Port initialisieren und wieder schließen!
@Andreas: Hier ist es für LabVIEW 8:
[
attachment=30493]
Gruß Markus
' schrieb:ich kann mir Dein VI leider nicht ansehen. (kein LV2010)
Da kann ich Gerd nur beipflichten.
Das ganze muß erstmal in einer Schleife laufen.
Kleine Anregung!
[
attachment=30534]
Grüße
Andreas
@Y-P Danke!
Vielen Dank für euere Antworten.
ich bin jetzt schon ein ganzes Stück weiter.
@GerdW
nein ich will die RFID nicht dauernd abfragen sonder nur in einem bestimmten Teil des Programms.
Da die ID nicht nur als Identifizierung sonder auch als Startsignal für den weiteren Programmablauf benutzt wird.
Hier nochmal mein aktueller Stand des VI's