VISA-Empfang mit Polling- oder Interruptsteuerung?
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
VISA-Empfang mit Polling- oder Interruptsteuerung?
Hallo allerseits,
als Anfänger arbeite ich bisher ich mit der Polling-Lesefunktion, habe damit aber regelmäßig Probleme mit Rahmensynchronisationsfehlern (ca. alle 20 s) und verlorenen oder abgeschnittenen Telegrammen (ca. jedes Zweite).
Das Programm erhält in Zeitabständen zwischen 20 und 5000 ms (meistens nahe 20 ms) Datenpakete mit einer Länge von 32 bis 35 Bytes mit 19200 (Später 57600) Baud.
Kommen meine Probleme vom Polling oder mache ich etwas anderes falsch?
VISA-Empfang mit Polling- oder Interruptsteuerung?
Also die Schnittstelle ist eigentlich nicht voll ausgelastet:
1/0.02sek = 50 Hz
50 Hz*35Bytes=1750Bytes/sek
1750Bytes/sek ist << als 19200 Baud
Das heisst daran kann es nicht liegen.
Frameerror und fehlende Bytes kommen eigenlich entweder wegen der Auslastung oder wegen falschen Einstellungen.
Überprüfe die Einstellungen vom Sender und Empfänger, die sollen genau identisch sein.
Beim Initialisieren von VISA gibt es oben einen Flag "Abschlusszeichen". Lese im Help genau nach wozu es da ist. Wahrscheinlich musst du ihn auf False setzen. Ausserdem hast du wahrscheinlich in deiner Polling-While-Schleife eine Wartezeit. Die ist überflüssig, wenn du beim Init von VISA den Timeout eingegeben hast.
VISA-Empfang mit Polling- oder Interruptsteuerung?
Hallo Eugen,
vielen Dank für deine schnelle Antwort.
Die Einstellungen von Sender und Empfänger stimmen überein, das Abschlusszeichen war auch deaktiviert.
Deinen Tipp mit dem Entfernen der Wartezeit habe ich befolgt, außerdem habe ich meinen Sender versuchsweise so eingestellt, dass er mindestens 1 s nach dem Senden eines Telgeramms wartet.
Leider zeigt "Empfangenes Telegramm" nichts mehr an und es wird auch nichts mehr verarbeitet.
Wenn ich hinter dem Lesen einen Breakpoint setze, dann sehe ich, dass Daten gelesen aber nicht verarbeitet werden.