[QUOTE=Andreas138;171118
Wenn ich die 1000 Int-Werte auslese, und sie dann mit "dc.getU16"
weiterverabeiten will, sind alle Werte 0.
[/QUOTE]
Das ist Zufall! Da könnte jeder Scheiß drin stehen! dc.getU16() ließt vom internen Puffer der Struktur auf die dc zeigt. Dessen Größe ist so gewählt, daß ein einzelnes Paket (Anfrage/Antwort/Schreibdaten) immer darin Platz hat, aber nicht mehrere.
Bei daveReadManyBytes mußt du deinen eigenen Puffer angeben. Das Lesen geht dann so:
Code:
Puffer von dc-> Dein Puffer:
"xxxxx"      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
"ABCDE"      "ABCDExxxxxxxxxxxxxxxxxxxxxxxx"
"FGHIJ"      "ABCDEFGHIJxxxxxxxxxxxxxxxxxxx"
"KLMNO"      "ABCDEFGHIJKLMNOxxxxxxxxxxxxxx"
usw.
daveGetU16() würde nun beim ersten Aufruf den Wert 256*ord('K')+ord('L') liefern und den internen Lesezeiger auf das M richten
Wenn ich die Werte allerdings mittels "daveGetU16from()" verarbeite,
werden sie alle korrekt angezeigt.
Kein Wunder. Dieser Funktion kannst du ja auch sagen , daß sie von DEINEM Puffer liest...