Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] SerialPort: Anfrage als einzele Teile vs. auf einen Rutsch senden
telnet
myCSharp.de - Member



Dabei seit:
Beiträge: 330

Themenstarter:

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

beantworten | zitieren | melden

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 ?
private Nachricht | Beiträge des Benutzers
Ristor
myCSharp.de - Member



Dabei seit:
Beiträge: 24

beantworten | zitieren | melden

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 =)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Ristor am .
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Hallo,

wie verschickst Du denn die Zeichen? Warum steht im Log oben "Port geschlossen"? Dann kann natürlich keine Antwort ankommen.
private Nachricht | Beiträge des Benutzers
telnet
myCSharp.de - Member



Dabei seit:
Beiträge: 330

Themenstarter:

beantworten | zitieren | melden

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 ?
private Nachricht | Beiträge des Benutzers
MartinH
myCSharp.de - Member

Avatar #avatar-1761.gif


Dabei seit:
Beiträge: 183
Herkunft: Asperg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers