Forum: PC-Programmierung Bytes über Serielle Schnittstelle senden/empfangen


von achim (Gast)


Lesenswert?

Hallo,

ich beschäftige mich gerade damit, vom PC Daten an den MC (mega168) zu 
schicken und dann wieder zum PC zurückzuschicken.

Ich habe dazu am PC mit C# ein Windowsprogramm geschrieben.

Das senden mehrerer Bytes an den MC ist kein Problem, da der 
Eingangspuffer auf der PC Seite sehr groß ist. Der MC holt sich dann 
seriell die Daten ab.

Wenn ich nun mehrere Bytes vom MC an den PC schicken will, weis ich 
nicht, wie ich die dann seriell abfragen kann.

Als Beispiel schicken ich einen String mir 3 mal einem Byte.

Die C# Routine beim Empfangen lautet:

 serialPort1.Open();
 serialPort1.Read(b, 0, 3);
 serialPort1.Close();

b ist ein ByteArray der Größe 3.

byte[]

Eigentlich sollte nun das erste Byte in b[0], das zweite in b[1] und das 
dritte an b[2] abgespeichert werden. Allerdings empfange ich nur ein 
Byte  in b[0].

Kann es sein, dass der Pufferspeicher vom UART im MC nur ein einziges 
Byte aufnehmen kann ?

Bin über Tipps sehr Dankbar !

Grüße

von Severino R. (severino)


Lesenswert?

achim wrote:

> Das senden mehrerer Bytes an den MC ist kein Problem, da der
> Eingangspuffer auf der PC Seite sehr groß ist. Der MC holt sich dann
> seriell die Daten ab.
Hä? Der PC sendet die Daten an den MC und der MC muss in der Lage sein, 
die Daten genug schnell zu empfangen. Ausser Du verwendest ein 
Handshake.

>  serialPort1.Open();
>  serialPort1.Read(b, 0, 3);
>  serialPort1.Close();

Wie stellst Du sicher, dass die drei Bytes genau in der Zeit zwischen 
dem Open und dem Read gesendet werden?
Vor dem Open ist die Schnittstelle noch nicht auf Empfang, und Read 
erwartet dann bereits drei Bytes.
Ich würde das Lesen eher im Ereignis DataReceived durchführen.

> Kann es sein, dass der Pufferspeicher vom UART im MC nur ein einziges
> Byte aufnehmen kann ?
Ja. Hängt aber vom MC ab.
Prüf doch mal mit Hyperterminal, was da beim PC ankommt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thread gesperrt wg. Crossposting.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.