LabVIEWForum.de - RS232/I²C Bus Empfangsprobleme

LabVIEWForum.de

Normale Version: RS232/I²C Bus Empfangsprobleme
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
MorgenSmile

Habe hier ein kleines Problem und bin nicht sicher ob es Hardware oder Softwarebezogen ist. Und zwar sende ich Befehle über RS232 an ein Gerät, mit denen ich den Status aller I²C Devices abfragen kann, indem ich einzelne Register anspreche und auslese. Das funktioniert soweit auch ganz gut. Nun sollen die Abfragen allerdings automatisch geschehen. Z.B. kann ich mit diesen Abfragen die aktuelle Gerätetemp. abfragen. Möchte ich das nun in einem Messprogramm laufen lassen, wobei alle paar sek diese Abfrage passiert, kommen ja einige Abfragen zusammen.

Mir ist aufgefallen, dass immer wenn ich ein spezielles Register abfrage (in einer Schleife), der Empfang nach exakt 438 Abfragen nicht mehr funktioniert. Zwar sendet der PC noch die Daten, aber vom Gerät kommt keine Antwort mehr zurück. Wenn ich in einer Schleife nacheinander zwei verschiedene Abfragen mache, dann endet der Empfang auch tatsächlich bei der Hälfte (219). Wie gesagt das ganze ist reproduzierbar.

Habe mal extra ein kleines Testprogramm geschrieben, dass mir das genannte Verhalten bestätigt.

[attachment=31550]

Hier das entsprechende SubVI aus der Schleife dazu:

[attachment=31551]

Was meint ihr?

Die Probleme habe ich übrigens nur bei dem Zugriff auf die I²C Register. Alle anderen Abfragen laufen soweit ich weiß ohne Probleme (werde das auch nochmal testen).

mfg
Hast Du schon mal geschaut, was nach 438 Abfragen im Buffer liegt? Vielleicht hast Du da ein anderes (bzw. kein) Terminierungszeichen und deshalb hängt das Programm. Ist aber schon seltsam........

Gruß Markus
Hallo markus,

also am Eigenschaftsknoten Bytes at Port liegen nach besagten 438 Abfragen keine Bytes mehr an, der Empfangspuffer ist dementsprechend auch leer...

PS: Andere Geräteabfragen die nicht über I²C gehen funktionieren (getestet bis etwa 1500 Abfragen). Also wohl doch ein Hardwareproblem?

mfg
Gute Frage.... Jedenfalls schmiert das Programm dann ab, wenn nach dem Timeout immer noch keine Daten anliegen....

Gruß Markus

' schrieb:Hallo markus,

also am Eigenschaftsknoten Bytes at Port liegen nach besagten 438 Abfragen keine Bytes mehr an, der Empfangspuffer ist dementsprechend auch leer...

PS: Andere Geräteabfragen die nicht über I²C gehen funktionieren (getestet bis etwa 1500 Abfragen). Also wohl doch ein Hardwareproblem?

mfg
Wenn keine Daten anliegen, dann geht mein SubVI in den zweiten Teil der rechten CaseAnweisung und schreibt dort einen leeren String in die Ausgabe. Daher schmiert das Programm nicht ab sondern läuft normal weiter, es kommen halt nur keine Daten mehr an...

mfg
Hab's mit einem VI aus einem anderen Beitrag verwechselt. Dort gab es eine Fehlermeldung (die ich fälschlicherweise noch im Kopf hatte).

Gruß Markus

' schrieb:Wenn keine Daten anliegen, dann geht mein SubVI in den zweiten Teil der rechten CaseAnweisung und schreibt dort einen leeren String in die Ausgabe. Daher schmiert das Programm nicht ab sondern läuft normal weiter, es kommen halt nur keine Daten mehr an...

mfg
Tja..alles sehr merkwürdig. Ich habe nochmal mit einem anderen Terminalprogramm gegengetestet. Dort kann ich bis zu 50 Registerzugriffe automatisiert erzeugen. Habe dann einfach per copy&paste mehrmals nacheinander 50 Abfragen gesendet bis ich etwa 450-550 gemacht hatte - da kommt immer ne Antwort. Da besteht kein Anzeichen dafür dass irgendwas im Gerät nicht funktioniert. Mir ist außerdem aufgefallen, dass die Abfragen deutlich (!) schneller verarbeitet werden als in meinem LV Programm.

Also doch ein fehler bei mir? Finde leider nix...

mfg
Referenz-URLs