Browse Source

优化读取串口的处理:等待响应改为200ms,同时判断如何接收小于2再次接收。

jianfeng1.wang 2 years ago
parent
commit
e75bde70ce
1 changed files with 9 additions and 1 deletions
  1. 9 1
      FactoryTool_CShare/IO/SerialCMD.cs

+ 9 - 1
FactoryTool_CShare/IO/SerialCMD.cs

@@ -2857,7 +2857,7 @@ namespace MOKA_Factory_Tools
                     // 分2段2次返回,第2次同样要再次设置超时值;
                     // 分2段2次返回,第2次同样要再次设置超时值;
                     Comport.ReadTimeout = ReadTimeout;                
                     Comport.ReadTimeout = ReadTimeout;                
                     //等待一段时间确保接收到完整数据
                     //等待一段时间确保接收到完整数据
-                    Thread.Sleep(100);
+                    Thread.Sleep(200);
                     //取一个空间存放第二段
                     //取一个空间存放第二段
                     //校验第二段CRC是否正确
                     //校验第二段CRC是否正确
                     //根据长度判断是否有FE字段
                     //根据长度判断是否有FE字段
@@ -2869,6 +2869,14 @@ namespace MOKA_Factory_Tools
                         Log.WriteErrorLog("Received Nothing.");
                         Log.WriteErrorLog("Received Nothing.");
                         return false;
                         return false;
                     }
                     }
+
+                    if ( reallyLength <= 2 )
+                    {
+                        Thread.Sleep(350);
+                        int len = Comport.Read(receive2Data, reallyLength, 20480);
+                        reallyLength += len;
+                    }
+
                     //CRC校验
                     //CRC校验
                     byte crcHighByte = receive2Data[reallyLength - 2];
                     byte crcHighByte = receive2Data[reallyLength - 2];
                     byte crcLowByte = receive2Data[reallyLength - 1];
                     byte crcLowByte = receive2Data[reallyLength - 1];