Laden...

Comport Problem bei Einstellg unterschiedlicher Baudraten

Erstellt von macke_a vor 12 Jahren Letzter Beitrag vor 12 Jahren 706 Views
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren
Comport Problem bei Einstellg unterschiedlicher Baudraten

Hallo..

Ich verwende den C# Wrapper von CommBase.cs um mein Comport zu initialisieren.

Für die Kommunikation mit meiner Gegenstelle verwende ich eine Baudrate von 9600, nach Austausch von mehreren Daten muss ich auf 34800 wechseln.

Meine Sourcecode sieht einfach dargestellt folgendermaßen aus:

private Serial ComPort;

ComPort = new Serial("COM2:", 9600);         
ComPort.Open();
ComPort.OnDataReceived += new Serial.OnDataReceivedEventHandler(OnData);

// Ca. 7 Sekunden Verzögerung beim Umstellen der Baudrate aufgrund Austausch der Anfangstelegramme

ComPort.Close();
ComPort.ComPort = "COM2";
ComPort.Baudrate = 38400;
ComPort.Open()

Bei der Initailisierung mit 9600 funktioniert der Empfang und das Senden der Daten,
bei der Umstellung auf 38400 funktioniert das Senden der Daten, aber der Empfang nicht mehr.

Kennt jemand möglich Ursachen, die in Verbindung mit dem C# Wrapper von CommBase.cs stehen?

Freue mich auf antworten...

Gruss macke_a

N
191 Beiträge seit 2007
vor 12 Jahren

Ich kenne den Wrapper nicht, aber ich denke du wirst deinen Eventhandler nach dem erneuten öffnen nochmals initialisieren müssen


private Serial ComPort;

ComPort = new Serial("COM2:", 9600);
ComPort.Open();
ComPort.OnDataReceived += new Serial.OnDataReceivedEventHandler(OnData);

// Ca. 7 Sekunden Verzögerung beim Umstellen der Baudrate aufgrund Austausch der Anfangstelegramme

ComPort.OnDataReceived -= new Serial.OnDataReceivedEventHandler(OnData);
ComPort.Close();
ComPort.ComPort = "COM2";
ComPort.Baudrate = 38400;
ComPort.Open();
ComPort.OnDataReceived += new Serial.OnDataReceivedEventHandler(OnData);

"If you give someone a
program, you will frustrate them
for a day; if you teach them how to
program, you will frustrate them
for a lifetime." :evil:

U
1.688 Beiträge seit 2007
vor 12 Jahren

Kennt jemand möglich Ursachen, die in Verbindung mit dem C# Wrapper von CommBase.cs stehen?

Hast Du denn eine andere Anwendung, mit der es funktioniert?

Prinzipiell habe ich aber noch gar nicht verstanden, warum und wie Du die Bitrate wechselst. Wo teilst Du denn der Gegenstelle mit, dass sie die Bitrate ändern soll? Und wie wird die wieder zurückgesetzt, wenn Dein Programm neu startet?

Ansonsten kann es natürlich sein, dass der Wrapper die Schnittstelle nicht nur neu öffnen muss, sondern auch der Wrapper neu erzeugt werden muss.