13.10.2014, 14:39
13.10.2014, 14:53
13.10.2014, 15:00
13.10.2014, 15:13
Hallo Galle,
du machst da ein paar Standard-Anfängerfehler. Du schreibst beispielsweise auf den Port ein Komando, wartest 10ms und erwartest dann adhoc eine Antwort. Was machste denn, wenn von der z.B. 10Byte langen Antwort erst 7 Byte im SS-Puffer angekommen sind. Dann schickst du irgendwann (nach der Summe deiner Wartezeiten) ein neues Komando und liest 10ms später den Rest der 1. Antwort und den erten Teil der nächsten.
Gruß, Marko
du machst da ein paar Standard-Anfängerfehler. Du schreibst beispielsweise auf den Port ein Komando, wartest 10ms und erwartest dann adhoc eine Antwort. Was machste denn, wenn von der z.B. 10Byte langen Antwort erst 7 Byte im SS-Puffer angekommen sind. Dann schickst du irgendwann (nach der Summe deiner Wartezeiten) ein neues Komando und liest 10ms später den Rest der 1. Antwort und den erten Teil der nächsten.
Gruß, Marko
13.10.2014, 15:22
Hallo Marko,
danke für deine Antwort. Ich bin auch Anfänger ;-)
Aber zum Problem: Bis jetzt klappt es eigentlich ganz gut und ich empfange immer alle (19) Bytes. Wenn mal ein Rest bleibt bzw. nur der Anfang empfangen wurde, wollte ich diese eigentlich mit der Case-Struktur verwerfen (da es diese Werte dann nicht gibt!). Ich lese ja alle 300ms und habe damit ausreichend Zeit beim überfahren 2-3 mal zu lesen. Da ist dann immer was ordentliches dabei ;-)
Aber wie kann ich es denn besser machen? Dein Tip?!
danke für deine Antwort. Ich bin auch Anfänger ;-)
Aber zum Problem: Bis jetzt klappt es eigentlich ganz gut und ich empfange immer alle (19) Bytes. Wenn mal ein Rest bleibt bzw. nur der Anfang empfangen wurde, wollte ich diese eigentlich mit der Case-Struktur verwerfen (da es diese Werte dann nicht gibt!). Ich lese ja alle 300ms und habe damit ausreichend Zeit beim überfahren 2-3 mal zu lesen. Da ist dann immer was ordentliches dabei ;-)
Aber wie kann ich es denn besser machen? Dein Tip?!
13.10.2014, 15:25
Hallo Galle,
BytesAtPort weglassen und gleich 30 Bytes abfragen…
BytesAtPort weglassen und gleich 30 Bytes abfragen…
13.10.2014, 15:27
Wie schon hier geschrieben!
(13.10.2014 07:37 )jg schrieb: [ -> ]Noch ein Tipp:
"Bytes at Port" bei gleichzeitiger Verwendung des "Termination Char" in der VISA-Kommunikation ist in der Regel überflüssig und kontraproduktiv.
Gruß, Jens
13.10.2014, 15:32
Hallo Galle,
wenn du irgendwelche Stuss-Daten liest, dann gehst du in den Standardcase und der entspricht dem Case 0000.
Feste Wartezeiten sind immer schlecht und taugen i.d.R. nur für genau diesen Anwendungsfall. Besser ist es, ein Abschlusszeichen zu definieren und nur ein KO-Timeout zu kreieren, damit sich das ganze nicht festbeißen kann. Wenn du kein Abschlusszeichen definieren kannst, weil es keins gibt, dann die zu erwartende Byteanzahl mit einem hinreichend großen TO lesen.
Gruß, Marko
wenn du irgendwelche Stuss-Daten liest, dann gehst du in den Standardcase und der entspricht dem Case 0000.
Feste Wartezeiten sind immer schlecht und taugen i.d.R. nur für genau diesen Anwendungsfall. Besser ist es, ein Abschlusszeichen zu definieren und nur ein KO-Timeout zu kreieren, damit sich das ganze nicht festbeißen kann. Wenn du kein Abschlusszeichen definieren kannst, weil es keins gibt, dann die zu erwartende Byteanzahl mit einem hinreichend großen TO lesen.
Gruß, Marko
13.10.2014, 15:34
Gute Idee! Fand ich damals auch am logischten, funktioniert aber nicht. Keine Ahnung warum, aber mit Bytes-at-Port geht es.
13.10.2014, 15:37
dann poste dochmal das nicht funktionierende VI, was eigentlich gehen müsste.