C#写的上位机,为什么下发指令给下位机模块时,会有丢数据的情况

问题遇到的现象和发生背景

手上的任务主要是做关于上下位机通信交互的,下位机是一个设定的好的IMU惯性传感器模块,可以通过232通信下发一些指令以实现对其工作模式的控制,问题出现在我下发指令 FF AA 00 01 00 和指令 FF AA 02 08 00时,使用虚拟串口软件虚拟了俩个串口,另一个串口使用串口调试助手打开,发现接受的数据有异常。

问题相关代码,请勿粘贴截图
      串口基础设置
      SerialPort sp = new SerialPort();
      sp.Close();
      sp.PortName = "COM11";
      sp.BaudRate = int.Parse("19200");
      sp.DataBits = int.Parse("8");
      sp.StopBits = (StopBits)int.Parse("1");
      sp.ReadTimeout = 500;

     数据发送相关代码
      string Unlock_Command = "FFAA6988B5";                  
      string SaveSetting = "FFAA000000";
      string DefaultSetting = "FFAA000100";
      string SetSengdingData = "FFAA020800";
      sp.Write(strToHexByte(Unlock_Command), 0, strToHexByte(Unlock_Command).Length);
      sp.Write(strToHexByte(SetSengdingData), 0, strToHexByte(SetSengdingData).Length);
      sp.Write(strToHexByte(SaveSetting), 0, strToHexByte(SaveSetting).Length);

     private byte[] strToHexByte(string hexString)
     {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0) hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                  returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Replace(" ", ""), 16);
            return returnBytes;
     }
运行结果及报错内容
    虚拟串口是虚拟了COM11和COM12
    COM12使用野火调试助手打开的

实际接收到的数据如图

img

我的解答思路和尝试过的方法

试过修改波特率和将数据存储到Byte数组中发送,还是会有这种丢数据的问题出现

我想要达到的结果

下位机模块接收到的数据能够正常

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。