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