// 解析所有 private void AnalysisAllModRTU(byte[] validData) { byte[] headBytes = validData.Take(7).ToArray(); if (ByteUtil.BytesToText(headBytes, headBytes.Length).Trim() != "02 10 00 00 00 78 F0") { return; } // PLC定时推送120个寄存器和数据长度240的数组 //减去前面7个字节数据描述,最后两个字节的CRC byte[] plcData = validData.Skip(7).Take(validData.Length - 9).ToArray(); ushort plcAddress = ByteUtil.GetUshortValue(plcData, 0); this.GetPumpAreaName(plcAddress); // 加载点表信息 if (!GetDBInfos(out string errMsg)) { TraceManager.AppendErrMsg("查询DTU挂接点表集合失败:" + errMsg); return; } // 解析加载点表值 GetValue(plcData); // 存储到数据库 SaveDataToDB(); // 清楚对象中点表等缓存,避免内存过大 this.CLearDBInfos(); }