serialPort.ReadExisting () не работает должным образом C # |GSM модем - PullRequest
0 голосов
/ 20 октября 2018

работаю на GSM модеме.Я использую AT COMMAND и C # для моего проекта.иногда это работает нормально.иногда его нет.во время точек останова работает нормально.вот мой код.

string Opertorname = "";
                string PortStatus = "";
                SerialPort _serialPort = new SerialPort(portName, 115200);
                _serialPort.Parity = Parity.None;
                _serialPort.DataBits = 8;
                _serialPort.StopBits = StopBits.One;
                _serialPort.Handshake = Handshake.XOnXOff;
                string modemoutput= "";
                _serialPort.DtrEnable = true;
                _serialPort.RtsEnable = true;
                _serialPort.NewLine = Environment.NewLine;
                _serialPort.Encoding = Encoding.GetEncoding("iso-8859-1");
                Thread.Sleep(200);
                _serialPort.Open();
                Thread.Sleep(200);
                _serialPort.WriteLine("AT" + "\r");
                Thread.Sleep(300);
                modemoutput= _serialPort.ReadExisting().ToString();
                if (modemoutput.Contains("OK"))
                {
                    PortStatus = "Connected";
                }
                else
                {
                    PortStatus = "Failed";
                }
                Thread.Sleep(1000);
                _serialPort.WriteLine("AT+COPS?" + "\r");
                Thread.Sleep(1000);
                string inputData = "";
                string inData = _serialPort.ReadExisting();
                richTextBox1.Invoke((MethodInvoker)delegate
                {
                    richTextBox1.Text += inData+"\n";

                });

некоторое время я восстанавливал правильный вывод, как показано ниже

AT+COPS?
 +COPS: 0,0,"AirTel"

иногда неверный вывод, как показано ниже

AT+õ
AT+þ 

Примечание: я запускаю этоткод на фоне рабочего

...