Hallo,
Ich möchte über eine Modemverbindung, welche über ein COM-Port
angesteurt wird, nacheinander zu mehrere Geräten verbinden.
Die Verbindung funktioniert ganz gut, mein Problem ist nur das neue
Anwählen des nächsten Gerätes.
Und zwar ist obwohl ich den Comport geschlossen habe, immer noch die
Verbindung zu dem vorangegangenden Gerät aktiv.
Wenn ich jetzt AT-Befehle benutzen will, probiert der mikrocontroller an
der anderen Seite diese zu verstehen, anstatt das nächse Gerät
anzuwählen.
Ich hab das Problem mal auf Minimum runtergebrochen (siehe Code) und
habe schon folgenden Beitrag berücksichtig:
TitelBeitrag "Re: Suche C# Profi!"
Der Code wir in einer Schleife 5 mal hintereinader aufgerufen.
1 |
|
2 | SafeSerial ComPort=new SafeSerial();
|
3 | ComPort.DataReceived+=ComPort.OnDataReceived;
|
4 |
|
5 | ComPort.PortName = "COM1";
|
6 | ComPort.BaudRate = 19200;
|
7 | ComPort.Parity = System.IO.Ports.Parity.None;
|
8 | ComPort.StopBits = System.IO.Ports.StopBits.One;
|
9 | ComPort.DataBits = 8;
|
10 | ComPort.Handshake = Handshake.RequestToSend;
|
11 | ComPort.ReadBufferSize = 16384;
|
12 | ComPort.WriteBufferSize = 4096;
|
13 |
|
14 | ComPort.Open();
|
15 | Thread.Sleep(1000);
|
16 | ComPort.Send("ATM0E0X4V1L3\r");
|
17 | Thread.Sleep(1000);
|
18 | ComPort.Send("ATDT*"+nummer+"\r");
|
19 | Thread.Sleep(30000);
|
20 | ComPort.Send(Befehl1+"\r");
|
21 | Thread.Sleep(1000);
|
22 | ComPort.Send(Befehl2+"\r");
|
23 | Thread.Sleep(3000);
|
24 | ComPort.Send("logout\r");
|
25 | Thread.Sleep(5000);
|
26 | ComPort.Close();
|
27 | Thread.Sleep(3000);
|
28 | ComPort.DataReceived -= ComPort.OnDataReceived;
|
29 | ComPort=null;
|
30 | GC.Collect();
|
31 | Thread.Sleep(3000);
|
Vielleicht hatte schon jemand ähnliche Probleme oder sieht den Fehler.