diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/13f221c2-e4ee-49db-9af8-4fd0d3fe2d26.vsidx b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/13f221c2-e4ee-49db-9af8-4fd0d3fe2d26.vsidx deleted file mode 100644 index fbd4465..0000000 Binary files a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/13f221c2-e4ee-49db-9af8-4fd0d3fe2d26.vsidx and /dev/null differ diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/a6afdbad-6ee1-4153-b5ef-be7b26eec563.vsidx b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/a6afdbad-6ee1-4153-b5ef-be7b26eec563.vsidx new file mode 100644 index 0000000..7be3ff0 Binary files /dev/null and b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/a6afdbad-6ee1-4153-b5ef-be7b26eec563.vsidx differ diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/d809ceec-6f8f-4dfb-9102-121adaa240ad.vsidx b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/d809ceec-6f8f-4dfb-9102-121adaa240ad.vsidx new file mode 100644 index 0000000..f4f0500 Binary files /dev/null and b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/FileContentIndex/d809ceec-6f8f-4dfb-9102-121adaa240ad.vsidx differ diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/v17/.suo b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/v17/.suo index 6b39bf3..14f4666 100644 Binary files a/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/v17/.suo and b/ZTTMS_Manage_ZDPLFZBD_20230301/.vs/ZTTMS_Manage_ZDPLFZBD_20230301/v17/.suo differ diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/Form1.cs b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/Form1.cs index b737b78..2115445 100644 --- a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/Form1.cs +++ b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/Form1.cs @@ -205,21 +205,24 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 //数据接收 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { - byte[] data = new byte[512]; - int i = 0; + //byte[] data = new byte[512]; + //int i = 0; - while (this.serialPort1.BytesToRead > 0) + //while (this.serialPort1.BytesToRead > 0) + //{ + // data[i] = (byte)serialPort1.ReadByte(); + // i++; + //} + + byte[] data = new byte[serialPort1.BytesToRead]; + int num=serialPort1.Read(data, 0, data.Length); + + byte[] receiveData = new byte[num]; + for (int j = 0; j < num; j++) { - data[i] = (byte)serialPort1.ReadByte(); - i++; + receiveData[j] = data[j]; } - - byte[] receiveData = new byte[data.Length]; - for (int j = 0; j < data.Length; j++) - { - receiveData[i] = data[i]; - } - + Thread trdDataAnalysis = new Thread(DataAnalysis); trdDataAnalysis.IsBackground = true; trdDataAnalysis.Start(receiveData); @@ -244,16 +247,16 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 { byte[] newDataTemp = o as byte[]; - //将byte数组转为16进制string(带-) - string strData = BitConverter.ToString(newDataTemp, 1, newDataTemp.Length - 5); - string[] data = strData.Split('-'); + ////将byte数组转为16进制string(带-) + //string strData = BitConverter.ToString(newDataTemp, 1, newDataTemp.Length - 5); + //string[] data = strData.Split('-'); //16进制string - string data1 = ""; - for (int i = 0; i < data.Length; i++) - { - data1 += data[i]; - } + string data1 = ByteToString(newDataTemp); + //for (int i = 0; i < data.Length; i++) + //{ + // data1 += data[i]; + //} //string 实际发的字符串 string data2 = HexToString(data1); @@ -267,39 +270,51 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 //电文内容拆分 string[] content = data4.Split('*'); - //异或校验字节 - string code = content[1].Substring(0, 2); - byte checkCode = byte.Parse(code); + //16进制string转byte[] + byte[] recviveData = StringToBytes(content[0]); - //电文内容string - string data5 = HexToString(content[0]); + //接收数据校验 + byte checkCode = recviveData[recviveData.Length - 1]; - //发的是字符串 a实际是其ascii码表示的byte - - //string转byte[] - byte[] checkTemp = Encoding.Default.GetBytes(data5); - byte[] checkData = new byte[checkTemp.Length - 7]; - for (int i = 0; i < checkTemp.Length - 7; i++) + byte[] buffer = new byte[recviveData.Length - 1]; + for (int i = 0; i < recviveData.Length - 1; i++) { - checkData[i] = checkTemp[i]; + buffer[i] = recviveData[i]; } - string[] recvData = data4.Split(' '); + ////异或校验字节 + //string code = content[1].Substring(0, 2); + //byte checkCode = byte.Parse(code); + + //电文内容string + string data5 = HexToString(ByteToString(recviveData)); + + ////发的是字符串 a实际是其ascii码表示的byte + + ////string转byte[] + //byte[] checkTemp = Encoding.Default.GetBytes(data5); + //byte[] checkData = new byte[checkTemp.Length - 7]; + //for (int i = 0; i < checkTemp.Length - 7; i++) + //{ + // checkData[i] = checkTemp[i]; + //} + + string[] recvData = data5.Split(' '); //byte[] dataTemp = Encoding.Default.GetBytes(data4); string path = Environment.CurrentDirectory; string savePath = path + "/" + "WaringData.txt"; - for (int i = 0; i < data3.Length; i++) - { - Console.WriteLine(data3[i]); - } + //for (int i = 0; i < data3.Length; i++) + //{ + // Console.WriteLine(data3[i]); + //} //发信人地址 sqlTerminalEquipmentId = returnDeviceId(data3[2]); - if (newDataTemp[0] == 0x24 && newDataTemp[newDataTemp.Length - 1] == 0x0A && newDataTemp[newDataTemp.Length - 2] == 0x0D && CheckSum(newDataTemp) == checkCode && CheckSum(checkData) == byte.Parse(recvData[recvData.Length - 2]) && recvData[recvData.Length - 1] == "AABB" && sqlTerminalEquipmentId >= 0) + if (CRC(ByteToString(buffer)) == checkCode.ToString()) { sqlMessageType = recvData[0]; sqlMessageId = recvData[1]; @@ -342,7 +357,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); #endregion - if (sqlMessageType == "Position" && sqlMessageId == "01" && recvData.Length == 7) + if (sqlMessageType == "Position" && sqlMessageId == "01" && recvData.Length == 6) { //位置信息 sqlDeviceName = "位置信息"; @@ -390,7 +405,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } link.LinkClose(); } - else if (sqlMessageType == "Imu" && sqlMessageId == "01" && recvData.Length == 8) + else if (sqlMessageType == "Imu" && sqlMessageId == "01" && recvData.Length == 7) { //姿态信息 sqlDeviceName = "姿态信息"; @@ -487,7 +502,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); } } - else if (sqlMessageType == "Imu" && sqlMessageId == "02" && recvData.Length == 8) + else if (sqlMessageType == "Imu" && sqlMessageId == "02" && recvData.Length == 7) { //姿态信息 sqlDeviceName = "姿态信息"; @@ -510,7 +525,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data2Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData2Error:" + ex.ToString()); } sqlRecordTime = DateTime.Now; @@ -533,7 +548,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data2Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData2Error:" + ex.ToString()); } if (num > 0) @@ -565,7 +580,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data2Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData2Error:" + ex.ToString()); } if (num > 0) @@ -584,7 +599,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); } } - else if (sqlMessageType == "Imu" && sqlMessageId == "03" && recvData.Length == 8) + else if (sqlMessageType == "Imu" && sqlMessageId == "03" && recvData.Length == 7) { //姿态信息 sqlDeviceName = "姿态信息"; @@ -607,7 +622,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data3Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData3Error:" + ex.ToString()); } sqlRecordTime = DateTime.Now; @@ -630,7 +645,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data3Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData3Error:" + ex.ToString()); } if (num > 0) @@ -662,7 +677,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data3Error:" + ex.ToString()); + Console.WriteLine("TerminalAttitudeData3Error:" + ex.ToString()); } if (num > 0) @@ -681,7 +696,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); } } - else if (sqlMessageType == "ManyPara" && sqlMessageId == "01" && recvData.Length == 8) + else if (sqlMessageType == "ManyPara" && sqlMessageId == "01" && recvData.Length == 7) { //多参数 sqlDeviceName = "多参数数据"; @@ -704,7 +719,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } catch (Exception ex) { - Console.WriteLine("Data1Error:" + ex.ToString()); + Console.WriteLine("TerminalMultiparameterData1Error:" + ex.ToString()); } sqlRecordTime = DateTime.Now; @@ -749,7 +764,6 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 { while (cycleTime < 3) { - string sqlId = IdHelper.GetId(); int num = 0; string sql = $"update ztms_observe_zhedapiaoliufuzi_data set temperature='{temperature}', ph='{ph}', conductivity='{conductivity}' where device_name='{sqlMessageType}' and serialnumber='{sqlMessageNum}';"; @@ -778,7 +792,7 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); } } - else if (sqlMessageType == "ManyPara" && sqlMessageId == "02" && recvData.Length == 8) + else if (sqlMessageType == "ManyPara" && sqlMessageId == "02" && recvData.Length == 7) { //多参数 sqlDeviceName = "多参数数据"; @@ -875,14 +889,14 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 link.LinkClose(); } } - else if (sqlMessageType == "InPara" && sqlMessageId == "01" && recvData.Length == 10) + else if (sqlMessageType == "InPara" && sqlMessageId == "01" && recvData.Length == 8) { sqlDeviceName = "工作环境参数"; string etemperature = recvData[3]; string humidity = recvData[4]; string pressure = recvData[5]; string dryBatteryVoltage = recvData[6]; - string destrcutionState = recvData[7]; + //string destrcutionState = recvData[7]; //string destructionState1 = ""; //if (destrcutionState == "0") // destructionState1 = "关闭"; @@ -988,25 +1002,95 @@ namespace ZTTMS_Manage_ZDPLFZBD_20230301 } return result; } + + + /// + /// 将字符串形式的多位字节信息转换为对应的字节数组 + /// + /// + /// + public static byte[] StringToBytes(string s) + { + string[] str = s.Split(' '); + int n = str.Length; + + byte[] cmdBytes = null; + int p = 0; + + + for (int k = 0; k < n; k++) + { + int sLen = str[k].Length; + int bytesLen = sLen / 2; + int position = 0; + byte[] bytes = new byte[bytesLen]; + for (int i = 0; i < bytesLen; i++) + { + string abyte = str[k].Substring(position, 2); + bytes[i] = Convert.ToByte(abyte, 16); + position += 2; + } + + if (position >= 2) + { + byte[] cmdBytes2 = new byte[p + bytesLen]; + if (cmdBytes != null) + { + Array.Copy(cmdBytes, 0, cmdBytes2, 0, p); + } + Array.Copy(bytes, 0, cmdBytes2, p, bytesLen); + cmdBytes = cmdBytes2; + p += bytesLen; + } + } + + return cmdBytes; + } #endregion #region 计算校验码 - private byte CheckSum(byte[] buffer) + private static string CRC(string cmdString) { - byte sum = 0; - foreach (byte b in buffer) + try { - if (b == 0x24 || b == 0x21) - continue; - if (b == 0x2A) - break; - sum ^= b; + //CRC寄存器 + int CRCCode = 0; + //将字符串拆分成为16进制字节数据然后两位两位进行异或校验 + for (int i = 1; i < cmdString.Length / 2; i++) + { + string cmdHex = cmdString.Substring(i * 2, 2); + if (i == 1) + { + string cmdPrvHex = cmdString.Substring((i - 1) * 2, 2); + CRCCode = (byte)Convert.ToInt32(cmdPrvHex, 16) ^ (byte)Convert.ToInt32(cmdHex, 16); + } + else + { + CRCCode = (byte)CRCCode ^ (byte)Convert.ToInt32(cmdHex, 16); + } + } + return Convert.ToString(CRCCode, 16).ToUpper();//返回16进制校验码 + } + catch + { + throw; } - - return sum; } #endregion + + + public static string ByteToString(byte[] bytes) + { + string length = BitConverter.ToString(bytes, 0, bytes.Length); + string[] length1 = length.Split('-'); + string length2 = ""; + for (int i = 0; i < length1.Length; i++) + { + length2 += length1[i]; + } + return length2; + } } } diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 5235c36..e36f584 100644 Binary files a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/ZTTMS_Manage_ZDPLFZBD_20230301.csproj.AssemblyReference.cache b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/ZTTMS_Manage_ZDPLFZBD_20230301.csproj.AssemblyReference.cache index 072d68d..056fde0 100644 Binary files a/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/ZTTMS_Manage_ZDPLFZBD_20230301.csproj.AssemblyReference.cache and b/ZTTMS_Manage_ZDPLFZBD_20230301/ZTTMS_Manage_ZDPLFZBD_20230301/obj/Debug/ZTTMS_Manage_ZDPLFZBD_20230301.csproj.AssemblyReference.cache differ