ruffy d. monkey schrieb:
> private void serialPort1_DataReceived
> (object sender, System.IO.Ports.SerialDataReceivedEventArgs
> e)
> {
> RxString = serialPort1.ReadExisting();
> int y = serialPort1.BytesToRead;
> serialPort1.Read(buff, 0, 96966);
> this.Invoke(new EventHandler(DisplayText));
> }
>
> Es werden jedoch nur 392(y=0x188) übertragen :-( und das irgendwo in dem
> File -> also nicht schön von anfang an). Als Übertragungsmedium habe ich
> ZigBee Module die als Wireless Uart laufen. Was mache ich hier falsch?
Der DataReceived Event wird vom System angeleiert, sobald auf der
Seriellen die ersten Zeichen eintrudeln. Logisch, das da in einem Aufruf
nicht alles empfangen wird ... der Sender hat noch gar nicht begonnen
die Daten wegzuschicken.
Du wirst mehrere Aufrufe von DataReceived sehen und du musst die Daten
ALLER Aufrufe wieder zu deinen kompletten Daten zusammensetzen.
Daher wäre es eine extrem gute Idee, wenn der Sender erst mal eine
Information rausrücken würde, wieviele Daten er denn eigentlich zu
senden gedenkt oder sonst irgendwie dem Empfänger eine Möglichkeit gibt,
zu erkennen "jetzt kommt nichts mehr".
Was du letzten Endes von deinem Rechner erwartest ist, dass er hellsehen
kann. Er soll sich irgendwie aus den Fingern saugen, wieviele Datenbytes
da eintrudeln werden und wenn alle da sind, soll er dir mit dem
DataReceived Event Bescheid geben. Nur ... so spielts das nicht. Auf der
Seriellen bist du selbst für das Protokoll verantwortlich.