C# 从Rs232读取字符串后获得两个空格

C# 从Rs232读取字符串后获得两个空格,c#,C#,我正试着从rs232读取数据。出于某种原因,有时(并非总是)在读取字符串后需要两个空格 public static void Modem(Main ths) { mySerialPort = new SerialPort(Connection.ModemSerialPort); mySerialPort.BaudRate = 115200; mySerialPort.Parity = Pa

我正试着从rs232读取数据。出于某种原因,有时(并非总是)在读取字符串后需要两个空格

public static void Modem(Main ths)
    {


                mySerialPort = new SerialPort(Connection.ModemSerialPort);
                mySerialPort.BaudRate = 115200;
                mySerialPort.Parity = Parity.None;
                mySerialPort.StopBits = StopBits.One;
                mySerialPort.DataBits = 8;
                mySerialPort.Handshake = Handshake.None;

                mySerialPort.Open();
                mySerialPort.WriteLine("AT+VCID=1\r");
                mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);



    }
    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        try
        {

            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();

            if (indata.Contains("=") == true)
            {


                string str = indata.Split('=').Last().Trim(); 
          }
所以我的结果是“测试”


我不知道为什么会发生这种情况。

您知道这些空格是发送的,还是从串行端口读取时添加的?您的“测试”结果如何?我在您的代码中看不到这一点。此代码使用ReadExisting()的方式不正确。相当标准的bug。你只能得到“存在”的东西,而这是完全不可预测的。通常只有1或2个字符。但在调试时似乎可以工作,这会大大降低代码的速度。当和调制解调器通话时,您应该始终支持ReadLine(),它为您提供完整的调制解调器响应。我正在使用result将其插入sql server中。但是当我寻找这个字符串时,我找不到它。因为ti需要另外两个我看不见的字符