Пример #1
0
        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);
        }
Пример #2
0
        /// <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("");
        }
Пример #3
0
        /// <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);
        }