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); }
/* * 解析出来的数据分为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); }
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); }
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); }
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); }