Laden...

[erledigt] SerialPort: Anfrage als einzele Teile vs. auf einen Rutsch senden

Erstellt von telnet vor 14 Jahren Letzter Beitrag vor 14 Jahren 804 Views
T
telnet Themenstarter:in
327 Beiträge seit 2006
vor 14 Jahren
[erledigt] SerialPort: Anfrage als einzele Teile vs. auf einen Rutsch senden

Hallo,

ich versuche hier gerade ein über COM-Port angeschlossenes Gerät zum sprechen zu bewegen 😉
Über Putty funktioniert das ganze auch wunderbar - ich schicke eine Steuerfolge "ArAs" an das Gerät und es antwortet mit einem Wert.
Im Serial Port Monitor sieht das ganze so aus:


Request: 17.03.2010 10:55:01.83064
 41                                                A               
Answer: 17.03.2010 10:55:01.86164 (+0.0312 seconds)
 41 0D                                             A.              
Request: 17.03.2010 10:55:02.23664 (+0.3749 seconds)
 72                                                r               
Answer: 17.03.2010 10:55:02.25264 (+0.0156 seconds)
 72 0D                                             r.              
Request: 17.03.2010 10:55:02.01764 (+0.7498 seconds)
 41                                                A               
Answer: 17.03.2010 10:55:02.03364 (+0.0156 seconds)
 41 0D                                             A.              
Request: 17.03.2010 10:55:03.29864 (+0.2499 seconds)
 73                                                s               
Answer: 17.03.2010 10:55:03.31464 (+0.0156 seconds)
 73 20 20 20 20 2E 33 32 30 36 30 0D               s    .32060.

Versuche ich das gleiche mit meiner C# Anwendung, dann sieht es leider so aus:


Request: 17.03.2010 10:56:05.11164 (+62.7035 seconds)
 41 72 41 73                                       ArAs            
Port geschlossen


Für mich sieht es so aus, als ob Putty jedes Zeichen einzeln senden würde, dann das Zeichen inkl. einem CarriageReturn als Rückgabe erhält und nach dem letzten Zeichen der Steuerfolge dann der Wert kommt.

In meiner Anwendung wird anscheinend alles auf einmal geschrieben...

Wie gehe ich das Problem am besten an, damit jeder character beim Write direkt geschrieben wird ? Einfach den Wert für den Buffer verkleinern ? Oder hängt das Verhalten vielleicht an der Konfiguration des SerialPorts ?

R
24 Beiträge seit 2009
vor 14 Jahren

Hi telnet,

wie liest du aus ? Poste mal (Code) wie du auf das event reagierst.

mfg
Ristor

//Edit: Oh das senden hab ich irgendwie verdrängt =)

U
1.688 Beiträge seit 2007
vor 14 Jahren

Hallo,

wie verschickst Du denn die Zeichen? Warum steht im Log oben "Port geschlossen"? Dann kann natürlich keine Antwort ankommen.

T
telnet Themenstarter:in
327 Beiträge seit 2006
vor 14 Jahren

Also.. Problem "gelöst".
Das Gerät war ein GagePort der Fa. Fowler, der ein bestimmtes Protokoll in ein RS232 kompatibles Protokoll umwandelt. Leider funktioniert die SerialPort Klasse aus .NET nicht so richtig mit diesen uralt (> 10 Jahre) Geräten. Über die Windows-API hätte es funktioniert, aber wer will sich schon selber einen API Wrapper für den SerialPort programmieren? Niemand.
Also, Gerät ausgetauscht, das neue funktioniert jetzt einwandfrei...
Es gibt auch auch andere Implementierungen der SerialPort Klasse von Drittanbietern. Weis jemand vielleicht, wo die Grenzen der Standard-SerialPort Klasse liegen ?

185 Beiträge seit 2005
vor 14 Jahren

Das Problem kann sein, dass das alte Gerät die Zeichen nicht so schnell lesen kann.
Ich hatte auch schon solche Probleme, und dann einfach Zeichen für Zeichen mit einer kleinen Pause gesendet.