private DataItem getCYWriteDataAskItem(byte[] buffer) { IdentityCode identityCode = MyDataConvert.get数据表示符(buffer); DataItem item = null; switch (identityCode) { case IdentityCode.设置服务器信息: item = new DataItem_C104(buffer); break; case IdentityCode.设置上传周期: item = new DataItem_C105(buffer); break; case IdentityCode.设置切断报警参数: item = new DataItem_C103(buffer); break; case IdentityCode.修正表数据: item = new DataItem_C102(buffer); break; case IdentityCode.设置公称流量: item = new DataItem_C101(buffer); break; case IdentityCode.换表: item = new DataItem_C107(buffer); break; } return(item); }
/// <summary> /// 添加修正任务 /// </summary> /// <param name="correctRecord"></param> /// <returns></returns> public string AddCorrentTask(CorrectRecord correctRecord, out Task returnTask) { string result = ""; returnTask = null; try { //先删除未执行的任务 DeleteUnRunTask(correctRecord.MeterNo.Trim()); MongoDBHelper <Meter> mongo = new MongoDBHelper <Meter>(); //1、记录修正信息 result = mongo.Insert(CollectionNameDefine.MeterCorrectRecord, correctRecord); if (result != "") { return(result); } //2、创建修正任务指令 //创建一个任务 MongoDBHelper <Task> mongo_task = new MongoDBHelper <Task>(); Task task = new Task(); task.MeterMac = correctRecord.MeterNo.Trim(); task.TaskDate = QuShi.getDate(); task.TaskID = Guid.NewGuid().ToString(); //用于和指令进行进行关联 task.TaskState = TaskState.Waitting; task.TaskType = TaskType.TaskType_校准; //点火任务(DH),换表登记(HB)、开阀(KF)、关阀(GF)、充值(CZ)、调整价格(TJ) //写任务 result = mongo_task.Insert(CollectionNameDefine.TaskCollectionName, task); if (result != "") { return(result); } Command cmd = new Command(); //1.写校正指令 byte ser = Convert.ToByte(new Random().Next(0, 255)); DataItem_C102 item_C102 = new DataItem_C102(ser, correctRecord.TotalTopUp - correctRecord.SettlementBalance, correctRecord.SettlementBalance, correctRecord.LastSettlementDayLJGas); cmd.TaskID = task.TaskID; cmd.Identification = ((UInt16)item_C102.IdentityCode).ToString("X2"); cmd.ControlCode = (byte)ControlCode.CYWriteData;//创源写操作 cmd.DataLength = Convert.ToByte(item_C102.Length); cmd.DataCommand = MyDataConvert.BytesToHexStr(item_C102.GetBytes()); cmd.Order = 1; //返回修正任务 result = CommandDA.Insert(cmd); returnTask = task; task.CommandList.Add(cmd); if (result != "") { return(result); } } catch (Exception e) { return(e.Message); } return(""); }
/// <summary> /// 处理主站请求的创源参数设置操作并返回应答数据 /// </summary> /// <param name="identityCode"></param> /// <param name="ser"></param> /// <param name="oldItem"></param> /// <returns></returns> private DataItem DowithCYWriteData(IdentityCode identityCode, byte ser, DataItem oldItem) { DataItem item = null; switch (identityCode) { case IdentityCode.设置上传周期: item = new DataItem_C105_Answer(ser); break; case IdentityCode.设置切断报警参数: item = new DataItem_C103_Answer(ser, this._st1, this._st2); break; case IdentityCode.设置服务器信息: item = new DataItem_C104_Answer(ser); break; case IdentityCode.修正表数据: item = new DataItem_C102_Answer(ser); DataItem_C102 item_C102 = oldItem as DataItem_C102; this.TotalTopUp = item_C102.CurrentDaySYMoney + item_C102.CurrentLJMoney; //总充值金额 this.LJMoney = item_C102.CurrentLJMoney; //累计金额 this.LastTotal = item_C102.SettlementDayLJGas; //上次结算日表底 this.CurrentBalance = item_C102.CurrentDaySYMoney; break; case IdentityCode.换表: item = new DataItem_C107_Answer(ser); DataItem_C107 item_C107 = oldItem as DataItem_C107; //本阶梯周期已使用累计用量 //当前剩余金额 this.LastTotal = this.TotalAmount - item_C107.LJGas; //计算气费,将价格调整的合适的阶梯 this.ChangeCalculate(this, item_C107.SYMoney); this.TotalTopUp = item_C107.SYMoney; this.CurrentBalance = item_C107.SYMoney; break; } Update(); return(item); }