Seite 1 von 1

Botschaft ausfiltern

Verfasst: Freitag 10. August 2018, 07:22
von Thommi77
Hallo zusammen,

ich habe ein Problem und irgendwie komm ich nicht weiter.
Ich habe ein Fluke 8808A per RS232 angeschlossen und kann sauber damit kommunizieren.
Ich sende den String MEAS? und bekomme die Antwort mit dem Messwert und danach noch eine Antwort mit dem Inhalt "=>". Damit sagt mir das Fluke das alles io ist. Aber wie kann ich diesen String ignorieren ? Mit S&H hab ich es versucht aber bekomme es nicht hin. Ziel ist es das ich zyklisch anfrage und der Messwert gehalten wird solange diese Antwort mit "=>" kommt, Danach kommt ja wieder ein aktueller Messwert und der "alte" soll überschrieben werden usw.
Ich hoffe ihr könnt folgen.

Danke und Gruß
Thommi

Re: Botschaft ausfiltern

Verfasst: Freitag 10. August 2018, 16:49
von Müllmann
Probier es mal mit der Funktion $Delete unter Strings, Hilfe ist online dabei.
Das sollte zumindest gehen, wenn die Anzahl vor den Steuerzeichen immer gleich lang ist.
Falls nicht aber am Ende immer die 2 Zeichen stehen, kann man mit der Funktion $Length die Länge
herausfinden und dann mit $Delete den passenden Teil auswählen.

Re: Botschaft ausfiltern

Verfasst: Samstag 11. August 2018, 07:40
von tmm
Hi,

mit dem $Replace-Baustein kannst du die unerwünschten Zeichen gegen "nichts" ersetzen lassen, dann sind sie weg.

Gruß MM

Re: Botschaft ausfiltern

Verfasst: Samstag 11. August 2018, 09:30
von Müllmann
Das kommt davon, wenn man sich von oben bis unten durch die Funktionen arbeitet und an der ersten möglichen Stelle stehen bleibt. Schon übersieht man die einfachste Möglichkeit mit $Replace.

Re: Botschaft ausfiltern

Verfasst: Montag 13. August 2018, 15:45
von Thommi77
Hallo,

und Danke für die Antworten. Ich habe es jetzt mal versucht. Leider kommt es dann zum empfangen einer 0.
Also der MW wird angezeigt danach folgt eine 0 (wahrscheinlich als Platzhalter für den gelöschten String) dann kommt wieder der Messwert usw.
Ich möchte jedoch das der Messwert solange stehenbleibt, der String "=>" ignoriert wird und der stehengebliebene MW wieder überschrieben wird usw. Also die typische Sample and Hold Anwendung die aber hier irgendwie versagt...

Gruß
Thommi

Re: Botschaft ausfiltern

Verfasst: Dienstag 14. August 2018, 05:12
von Müllmann
Hallo Thommi77,

was ich an deiner zyklischen Abfrage nicht verstehe, du führst den Taktgeber G1 und die BSY-Meldung auf den CK-Eingang, warum ?
Setze doch mal versuchsweise nur einen Taster an den CK-Eingang und probier aus, ob jedes Mal eine brauchbare Meldung kommt.
Für eine zyklische Abfrage würde allein der Taktgeber ausreichen, der sollte nur nicht zu schnell sein.

Im Übrigen könnte man dir leichter helfen, wenn du das Programm hier hochlädst.

Re: Botschaft ausfiltern

Verfasst: Mittwoch 15. August 2018, 12:35
von abacom
Protokoll des Gerätes wäre ggf. auch hilfreich. Synchronzeichen korrekt eingestellt?

Re: Botschaft ausfiltern

Verfasst: Donnerstag 16. August 2018, 19:03
von Thommi77
Hallo zusammen,

den Taktgeber habe ich nur als Anstoß drin. Normalerweise macht es ein Taster oder auch ein Power on Reset. Dann ist das Ding ein Selbstläufer und fragt immer neu an wenn er die Antwort komplett empfangen hat.
An sich ist das Abfragen des Fluke 8808A kein Ding. Es funktioniert wie gewünscht. Auch die Synchronzeichen sind korrekt und auch die üblichen Verdächtigen nämlich CR LF.
Ich sende :
MEAS? CR LF
und als Antwort kommt:
0,12358 CR LF
=> CR LF

Diese blöde "=>" soll bedeuten das das Messgerät alles verstanden hat und wieder bereit ist.
Bei einem Fehler würde es "=?" senden.
Ich habe testweise als Synchronzeichen für den Messwert das => einfach mit als Synchronzeichen deklariert, also als Synchronzeichen CR LF => CR LF eingetragen und siehe da ich kann mit voller Rate die Messwerte ohne Unterbrechung einwandfrei empfangen. Allerdings funktioniert das nur solange wie das Messgerät => (alles in Ordnung!) sendet. Bei einem Fehler (=?) würde die Übertragung stehenbleiben weil die Synchronzeichenkette ausbleibt.
Hier ist das Protokoll des 8808A:
8808a___umger0100.pdf
(1.96 MiB) 177-mal heruntergeladen
Danke und Gruß
Thommi

Re: Botschaft ausfiltern

Verfasst: Freitag 17. August 2018, 09:33
von Thommi77
Hier noch das Programm...

Re: Botschaft ausfiltern

Verfasst: Samstag 18. August 2018, 16:29
von Müllmann
Hallo Thommi,

habe dein Testprogramm mal etwas erweitert, kann es aber nicht ausprobieren.
Es ist der Versuch, die beiden Strings (Messwert und Status) nacheinander zu lesen.
Das funktioniert natürlich nur, wenn im Zyklus immer zweimal CR LF gesendet wird,
also "Messwert" CR LF und z.B "=>" CR LF
Das Programm ließe sich auch erweitern, indem schon beim Request geprüft wird,
ob "?>" oder "!>" zurück kommt. In dem Fall sollte man den darauffolgenden
COM Stringempfang unterbinden.

Viel Spaß beim Probieren, Scorp

Re: Botschaft ausfiltern

Verfasst: Dienstag 21. August 2018, 19:48
von Thommi77
Hallo Müllmann,

also erstmal recht herzlichen Dank für deine Mühe und den Lösungsansatz.
Das mit der zweiten COM Abfrage -> da wäre ich nie drauf gekommen. Ich dachte immer man kann nur einen COM Baustein pro Programm verwenden weil die sich sonst gegenseitig beeinflussen.

Ich kann es leider erst Donnerstag probieren. Ich melde mich sobald ich Ergebnisse habe !

Vielen Dank nochmal und schönen Gruß

Thommi

Re: Botschaft ausfiltern

Verfasst: Freitag 24. August 2018, 15:32
von Thommi77
Hi Müllmann,

also ich muss schon sagen: Hut ab !
Das Ding hat auf Anhieb funktioniert .
Vielen Dank dafür !
Gruß
Thommi
Klasse.png
Klasse.png (40.92 KiB) 5847 mal betrachtet