Esempio n. 1
0
        public override AnalysisDataModel AnalysisReceiveData(string RecevieData)
        {
            AnalysisDataModel analysisDataModel = new AnalysisDataModel();

            try
            {
                if (RecevieData.Length != 62)
                {
                    throw new Exception("返回字符串长度不正确 " + RecevieData);
                }
                //---电话号码
                string phoneNum = RecevieData.Substring(8, 11);
                //---瞬时流量
                string HourlyFlowRates = RecevieData.Substring(28, 4);
                HourlyFlowRates = HexToFloat(HourlyFlowRates);
                //---累积流量
                string a         = RecevieData.Substring(44, 4);
                string b         = RecevieData.Substring(48, 4);
                double d         = (Convert.ToInt32(a, 16) * 10000 + Convert.ToInt32(b, 16));
                string TotalFlow = MathHelper.DoubleToHex((d / 10).ToString("#0.0"));
                analysisDataModel.Data0 = phoneNum + HourlyFlowRates + TotalFlow;
                //CRC校验
                analysisDataModel.Data0 += CRC.ToModbusCRC16(analysisDataModel.Data0);
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.OK;
            }
            catch (Exception ex)
            {
                SimpleLogHelper.Instance.WriteLog(LogType.Error, ex, "AutecOldModbusRtu错误");
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.ERR;
            }
            return(analysisDataModel);
        }
Esempio n. 2
0
        /*
         * 解析出来的数据分为4部分 电话号(11个字节) + 瞬时流量(16个字节,为双精度浮点数) + 累计流量(16个字节,为双精度浮点数) + CRC16校验(4个字节)
         */
        public override AnalysisDataModel AnalysisReceiveData(string RecevieData)
        {
            AnalysisDataModel analysisDataModel = new AnalysisDataModel();

            try
            {
                if (RecevieData.Length != 78)
                {
                    throw new Exception("返回字符串长度不正确 " + RecevieData);
                }
                //---电话号码
                string phoneNum = RecevieData.Substring(8, 11);
                //---瞬时流量
                string HourlyFlowRates = RecevieData.Substring(28, 8);
                HourlyFlowRates = HourlyFlowRates.Substring(4, 2) + HourlyFlowRates.Substring(6, 2) + HourlyFlowRates.Substring(0, 2) + HourlyFlowRates.Substring(2, 2);
                HourlyFlowRates = MathHelper.HexToSingle(HourlyFlowRates);
                HourlyFlowRates = MathHelper.DoubleToHex(HourlyFlowRates);
                //---累积流量
                string a = RecevieData.Substring(60, 8);
                a = a.Substring(4, 4) + a.Substring(0, 4);
                int    b         = Convert.ToInt32(a, 16);
                string TotalFlow = MathHelper.DoubleToHex(b.ToString());
                analysisDataModel.Data0 = phoneNum + HourlyFlowRates + TotalFlow;
                //CRC校验
                analysisDataModel.Data0 += CRC.ToModbusCRC16(analysisDataModel.Data0);
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.OK;
            }
            catch (Exception ex)
            {
                SimpleLogHelper.Instance.WriteLog(LogType.Error, ex, "AutecAory5000错误");
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.ERR;
            }
            return(analysisDataModel);
        }
Esempio n. 3
0
        public override AnalysisDataModel AnalysisReceiveData(string RecevieData)
        {
            AnalysisDataModel analysisDataModel = new AnalysisDataModel();

            try
            {
                if (RecevieData.Length != 86)
                {
                    throw new Exception("返回字符串长度不正确 " + RecevieData);
                }
                //---电话号码
                string phoneNum = RecevieData.Substring(8, 11);
                //---瞬时流量
                string HourlyFlowRates = RecevieData.Substring(28, 8);
                HourlyFlowRates = MathHelper.HexToSingle(HourlyFlowRates);
                HourlyFlowRates = MathHelper.DoubleToHex(HourlyFlowRates);
                //---累积流量
                string a         = RecevieData.Substring(60, 8);
                string b         = RecevieData.Substring(68, 8);
                double c         = Convert.ToInt32(MathHelper.HexToSingle(b)) * 10000 + Convert.ToInt32(MathHelper.HexToSingle(a));
                string TotalFlow = MathHelper.DoubleToHex(c.ToString());
                analysisDataModel.Data0 = phoneNum + HourlyFlowRates + TotalFlow + GetDateTime();
                //CRC校验
                analysisDataModel.Data0 += CRC.ToModbusCRC16(analysisDataModel.Data0);
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.OK;
            }
            catch (Exception ex)
            {
                SimpleLogHelper.Instance.WriteLog(LogType.Error, ex, "AutecNewModbusRtu错误");
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.ERR;
            }
            return(analysisDataModel);
        }
Esempio n. 4
0
        public AnalysisDataModel AnalysisData(string Data)
        {
            AnalysisDataModel model = new AnalysisDataModel();
            string            data1 = Data.Substring(0, 43);
            string            crc   = Data.Substring(43, 4);

            if (CRC.ToModbusCRC16(data1) == crc)
            {
                model.Data0  = data1.Substring(0, 11);                          //电话号码
                model.Data1  = MathHelper.HexToDouble(data1.Substring(11, 16)); //瞬时流量
                model.Data2  = MathHelper.HexToDouble(data1.Substring(27, 16));
                model.Result = AnalysisDataModel.AnalysisResult.OK;
            }
            else
            {
                model.Result = AnalysisDataModel.AnalysisResult.ERR;
            }
            return(model);
        }
Esempio n. 5
0
        public override AnalysisDataModel AnalysisReceiveData(string RecevieData)
        {
            /*
             *  403A006518330328814F
             *  06010102180822094540
             *  091B2600000000000000
             *  00000000000000000000
             *  000000000000000F0F41
             *  00342606518082209450
             *  500000000
             *  1111111111111
             *  2222222222222
             *  2222222222222
             *  00000000000087954700000000280000000000593A0D0A
             */
            AnalysisDataModel analysisDataModel = new AnalysisDataModel();

            try
            {
                if (RecevieData.Length != 214)
                {
                    throw new Exception("返回字符串长度不正确 " + RecevieData);
                }
                //---电话号码
                string phoneNum = RecevieData.Substring(8, 11);
                //---瞬时流量
                string HourlyFlowRates = (double.Parse(RecevieData.Substring(129, 13)) / 10000000).ToString();
                HourlyFlowRates = MathHelper.DoubleToHex(HourlyFlowRates);
                //---累积流量
                string a         = (double.Parse(RecevieData.Substring(142, 13)) / 100).ToString();
                string TotalFlow = MathHelper.DoubleToHex(a.ToString());
                analysisDataModel.Data0 = phoneNum + HourlyFlowRates + TotalFlow + GetDateTime();
                //CRC校验
                analysisDataModel.Data0 += CRC.ToModbusCRC16(analysisDataModel.Data0);
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.OK;
            }
            catch (Exception ex)
            {
                SimpleLogHelper.Instance.WriteLog(LogType.Error, ex, "HuiZhongSCL_61D错误");
                analysisDataModel.Result = AnalysisDataModel.AnalysisResult.ERR;
            }
            return(analysisDataModel);
        }