Beispiel #1
0
        // 解析所有
        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();
        }