コード例 #1
0
ファイル: XD202Processor.cs プロジェクト: hkiaipc/hunb
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public void ProcessExecutedTask(Task task, ParseResult pr)
        {
            int instantFlux = Convert.ToInt32(pr.NameObjects.GetObject("IF"));
            // remain amount out int32 range
            //
            int remainAmount = 0;
            object remainAmountObject = pr.NameObjects.GetObject("RemainAmount");
            Debug.Assert(remainAmountObject != null, "remianAmountObject == null");

            try
            {
                remainAmount = Convert.ToInt32(remainAmountObject);
            }
            catch (Exception )
            {

            }

            //int remainAmount = 0;
            int beforeWL = Convert.ToInt32(pr.NameObjects.GetObject("WL1"));
            int behindWL = Convert.ToInt32(pr.NameObjects.GetObject("WL2"));
            int height = Convert.ToInt32(pr.NameObjects.GetObject("Height"));

            XD202Data data = new XD202Data(instantFlux, remainAmount, height, beforeWL, behindWL);
            XD202Device d = task.Device as XD202Device;
            d.XD202Data = data;

            // TODO:
            //
            DB.MeasureSluiceData.Insert(d, data);
        }
コード例 #2
0
ファイル: frmTaskDetail.cs プロジェクト: hkiaipc/yh
        public frmTaskDetail(Task task)
        {
            if (task == null)
                throw new ArgumentNullException("task");
            this._task = task;

            InitializeComponent();
        }
コード例 #3
0
ファイル: XD221Processor.cs プロジェクト: hkiaipc/yh
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public void ProcessExecutedTask(Task task, ParseResult pr)
        {
            if (StringHelper.Equal(task.Opera.Name, OperaNames.ReadReal))
            {

                //
                // 功能码:     0x10
                // 数据数:     0位
                // 成功后返回: 0x21+0x58+0x44+地址+0x80+功能码+0x12+日期+时间+已用水量+瞬时流量+闸前水位+闸后水位+CRC16

                // 日期(3字节BCD码 年+月+日)
                // 时间(3字节BCD码 时+分+秒)
                // 已用水量(4字节)(无符号整型)带一位小数点	m3          <b>
                // 瞬时流量(4字节)(无符号整型)带一位小数点	m3/h        <c>
                // 闸前水位(2字节)带两位小数点  m                         <a>
                // 闸后水位(2字节)带两位小数点  m
                //
                // 供电电压 (2Byte) 两位小数点                              <d>

                // 水位, 单位CM, <a>
                //
                int wl1 = (Int16)pr.NameObjects.GetObject("WL1");
                int wl2 = (Int16)pr.NameObjects.GetObject("WL2");
                uint instantFlux = (UInt32)pr.NameObjects.GetObject("IF");
                uint usedAmount = (uint)pr.NameObjects.GetObject("usedAmount");

                object objTemp = pr.NameObjects.GetObject("voltage");
                int voltage = Convert.ToInt32(objTemp);

                // <c>
                //
                instantFlux = (uint)(instantFlux / 10);
                // <b>
                //
                usedAmount = (uint)(usedAmount / 10);

                // <d>
                //
                voltage = voltage / 100;

                if (Config.Default.IsUseFluxFormula)
                {
                    instantFlux = (uint)YeHeCommuniServerApp.Default.DevieFormaulCollectionMapCollection.CalcInstantFlux(
                        task.Device.ID, DateTime.Now, wl1, wl2);
                }

                DitchDevice ditchDevice = task.Device as DitchDevice;
                ditchDevice.DitchData = new DitchData(wl1, wl2, instantFlux, usedAmount, voltage);
                DB.DitchDataDBI.Insert(ditchDevice, DateTime.Now, instantFlux, wl1, wl2, usedAmount, voltage);
            }

            //if (StringHelper.Equal(task.Opera.Name, OperaNames.ReadParams))
            //{
            //    XD221Params p = ProcessParams(pr);
            //    XD221Device xd221Device = task.Device as XD221Device;
            //    xd221Device.Xd221Params = p;
            //}
        }
コード例 #4
0
ファイル: XD2402Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 public static void ProduceExecutedTask( Task t , ParseResult pr )
 {
     if (pr.Success)
     {
         ProcessSuccess(t, pr);
     }
     else
     {
         ProcessFail(t, pr);
     }
 }
コード例 #5
0
ファイル: XD221ModbusProcessor.cs プロジェクト: hkiaipc/hunb
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public void ProcessExecutedTask(Task task, ParseResult pr)
        {
            // xd221 modbus
            //
            //if (StringHelper.Equal(task.Device.DeviceDefine.DeviceType,
            //    DeviceDefineConst.DDT_XD221Modbus)
            //    &&
            if (StringHelper.Equal(task.Opera.Name, OperaNames.ReadReal))
            {
                object objTemp = pr.NameObjects.GetObject("WL1");
                Int16 wl1 = Convert.ToInt16(objTemp);
                wl1 = MMToCM(wl1);

                objTemp = pr.NameObjects.GetObject("WL2");
                Int16 wl2 = Convert.ToInt16(objTemp);
                wl2 = MMToCM(wl2);

                objTemp = pr.NameObjects.GetObject("IF");
                uint instantFlux = Convert.ToUInt32(objTemp);

                objTemp = pr.NameObjects.GetObject("Voltage");
                int voltage = Convert.ToInt32(objTemp);

                voltage = voltage / 100;

                DitchDevice ditchDevice = task.Device as DitchDevice;
                DitchDataCache cache = ditchDevice.DitchDataCache;

                cache.SetWLInstantFlux(wl1, wl2, instantFlux, voltage);

                if (cache.IsComplete())
                {
                    ditchDevice.DitchData = new DitchData(cache);
                    DB.DitchDataDBI.Insert(ditchDevice, cache);
                    cache.Clear();
                }
            }

            if (StringHelper.Equal(task.Opera.Name, XD221ModbusOperaNames.ReadUsedAmount))
            {
                object objTemp = pr.NameObjects.GetObject("usedAmount");
                UInt32 usedAmount = Convert.ToUInt32(objTemp);
                DitchDevice ditchDevice = task.Device as DitchDevice;
                DitchDataCache cache = ditchDevice.DitchDataCache;
                cache.SetUsedAmount(usedAmount);
                if (cache.IsComplete())
                {
                    ditchDevice.DitchData = new DitchData(cache);
                    DB.DitchDataDBI.Insert(ditchDevice, cache);
                    cache.Clear();
                }
            }
        }
コード例 #6
0
ファイル: frmTaskManage.cs プロジェクト: hkiaipc/yh
 /// <summary>
 /// 
 /// </summary>
 private void AddTaskToListView(Task task)
 {
     string stationName = task.Device.Devices.Station.Name;
     string deviceType = task.Device.Text;
     string taskName = task.Opera.Text;
     string taskType = task.Strategy.ToString();
     string lastExecute = task.LastExecute.ToString();
     string[] items = new string[] { stationName, deviceType, taskName, taskType, lastExecute };
     ListViewItem lvi = new ListViewItem(items);
     lvi.Tag = task;
     this.lvTask.Items.Add(lvi);
 }
コード例 #7
0
ファイル: XD2402Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="t"></param>
 /// <param name="pr"></param>
 private static void ProcessFail(Task task, ParseResult pr)
 {
     XD2402Device  xd2402 = task.Device as XD2402Device;
     if (StringHelper.Equal(task.Opera.Name, XD2402OperaNames.ReadRecord))
     {
         int recordIndex = Convert.ToInt32(task.Opera.SendPart["RecordIndex"]);
         if (recordIndex >= xd2402.LastRecordIndex)
         {
             AddDownTask(xd2402);
         }
     }
 }
コード例 #8
0
ファイル: XD202Processor.cs プロジェクト: hkiaipc/lx
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public void ProcessExecutedTask(Task task, ParseResult pr)
        {
            int instantFlux = Convert.ToInt32(pr.NameObjects.GetObject("IF"));
            int remainAmount = Convert.ToInt32(pr.NameObjects.GetObject("RemainAmount"));
            int beforeWL = Convert.ToInt32(pr.NameObjects.GetObject ("WL1"));
            int behindWL = Convert.ToInt32(pr.NameObjects.GetObject("WL2"));
            int height = Convert.ToInt32(pr.NameObjects.GetObject("Height"));

            XD202Data data = new XD202Data(instantFlux, remainAmount, height, beforeWL, behindWL);
            XD202Device d = task.Device as XD202Device;
            d.XD202Data = data;

            // TODO:
            //
            DB.MeasureSluiceData.Insert(d, data);
        }
コード例 #9
0
ファイル: LXRainProcessor.cs プロジェクト: hkiaipc/lx
        public static void ProcessExecutedTask(Task task, ParseResult pr)
        {
            byte recordCount = Convert.ToByte(pr.NameObjects.GetObject("RecordCount"));
            byte[] bs = (byte[])pr.NameObjects.GetObject("Record");

            DateTime[] dts;
            int[] rains;

            bool b = LXRainCommon.RainResponse.Parse(bs, recordCount, out dts, out rains);
            if (b)
            {
                for (int i = 0; i < recordCount; i++)
                {
                    LXRainData rainData = new LXRainData();
                    rainData.DT = dts[i];
                    rainData.Rain = rains[i];

                    LXRainDevice rainDevice = task.Device as LXRainDevice;
                    rainDevice.LXRainData = rainData;
                }
            }
        }
コード例 #10
0
ファイル: Events.cs プロジェクト: hkiaipc/c2
 public NotFindCommuniPortEventArgs(Task task)
 {
     if (task == null)
         throw new ArgumentNullException("task");
     this._task = task;
 }
コード例 #11
0
ファイル: GRDeviceGraph.cs プロジェクト: hkiaipc/C3
 /// <summary>
 /// 
 /// </summary>
 /// <param name="soft"></param>
 /// <param name="task"></param>
 private void AddTask(CommuniSoft soft, Device device, Opera op)
 {
     Task task = new Task(device, op, new ImmediateStrategy());
     soft.TaskManager.Tasks.AddToHead(task);
     NUnit.UiKit.UserMessage.DisplayInfo(strings.CommandSubmit);
 }
コード例 #12
0
ファイル: XD2402Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="xd2402"></param>
 private static void AddDownTask(XD2402Device xd2402)
 {
     Opera downOP = xd2402.DeviceDefine.CreateOpera(XD2402OperaNames.Down);
     Task downTask = new Task(xd2402, downOP, new ImmediateStrategy());
     YeHeCommuniServerApp.Default.CommuniSoft.TaskManager.Tasks.Add(downTask);
 }
コード例 #13
0
ファイル: TaskDefine.cs プロジェクト: hkiaipc/c2
        /// <summary>
        /// 
        /// </summary>
        /// <param name="stationCollection"></param>
        /// <returns></returns>
        public TaskCollection Create(StationCollection stationCollection)
        {
            if (stationCollection == null)
            {
                throw new ArgumentNullException("stationCollection");
            }

            TaskCollection taskCollection = new TaskCollection();
            foreach( Station st in stationCollection )
            {
                foreach (Device device in st.Devices)
                {
                    if (StringHelper.Equal(device.DeviceDefine.DeviceType,
                        this.DeviceType))
                    {
                        Opera opera = device.DeviceDefine.CreateOpera(this.OperaName);
                        Strategy strategy = this.StrategyDefine.Create();
                        Task task = new Task(device, opera, strategy, TimeOut);
                        taskCollection.Add(task);
                    }
                }
            }
            return taskCollection;
        }
コード例 #14
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="task"></param>
 /// <param name="pr"></param>
 private static void ProcessSucess(Task task, ParseResult pr)
 {
     XD2300Device xd2300 = task.Device as XD2300Device;
     if (StringHelper.Equal(task.Opera.Name, OperaNames.ReadReal))
     {
         ProcessReadReal(xd2300, pr);
     }
     else if (StringHelper.Equal(task.Opera.Name, XD2300OperaNames.ReadRecordIndex))
     {
         ProcessReadRecordIndex(xd2300, pr);
     }
     else if (StringHelper.Equal(task.Opera.Name, XD2300OperaNames.ReadRecord))
     {
         ProcessReadRecord(pr, xd2300);
     }
 }
コード例 #15
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        private static void AddDownTask(XD2300Device xd2300)
        {
            log.Debug("add xd2300 down task");

            // add down command
            //
            Opera downOP = xd2300.DeviceDefine.CreateOpera(XD2300OperaNames.Down);
            Task downTask = new Task(xd2300, downOP, new ImmediateStrategy());
            YeHeCommuniServerApp.Default.CommuniSoft.TaskManager.Tasks.Add(downTask);
        }
コード例 #16
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public void ProcessExecutedTask(Task task, ParseResult pr)
        {
            //AddReadRecordTestTask(task.Device as XD2300Device);

            string logMsg = string.Format("process task {0} {1}", task.Opera.Name, pr.Success );
            log.Debug(logMsg);

            if (pr.Success)
            {
                ProcessSucess(task, pr);
            }
            else
            {
                // task fail
                //
                ProcessFail(task);
            }
        }
コード例 #17
0
ファイル: ProcessAddinSimple1.cs プロジェクト: hkiaipc/yh
 public void ProcessExecutedTask(Task task, ParseResult pr)
 {
     throw new NotImplementedException();
 }
コード例 #18
0
ファイル: ProcessAddinSimple1.cs プロジェクト: hkiaipc/yh
 public void ProcessExecutingTask(Task task)
 {
     throw new NotImplementedException();
 }
コード例 #19
0
ファイル: Events.cs プロジェクト: hkiaipc/c2
        public TaskExecutedEventArgs(Task task, ParseResult parseResult)
        {
            if (task == null)
                throw new ArgumentNullException("task");
            this._task = task;

            if (parseResult == null)
                throw new ArgumentNullException("parseResult");
            this._parseResult = parseResult;
        }
コード例 #20
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="task"></param>
 internal void ProcessExecutingTask(Task task)
 {
     //if (StringHelper.Equal(task.Opera.Name, "WriteRecordSaveTimeSpan"))
     //{
     //    Opera op = task.Opera;
     //    //object obj = op.SendPart["RecordTimeSpan"];
     //    op.SendPart["RecordSaveTimespan"] = new byte[] { 0x00, 0x0B};
     //}
 }
コード例 #21
0
ファイル: Events.cs プロジェクト: hkiaipc/c2
 public TaskExecutingEventArgs(Task task)
 {
     if (task == null)
         throw new ArgumentNullException("task");
     this._task = task;
 }
コード例 #22
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pr"></param>
        /// <param name="xd2300"></param>
        private static void ProcessReadRecordIndex(XD2300Device xd2300, ParseResult pr)
        {
            // process read record index
            //
            UInt16 index = Convert.ToUInt16(pr.NameObjects.GetObject("RecordIndex"));

            // create new read record task
            //
            if (xd2300.IsLastRecordIndexValid())
            {
                int readedIndex = xd2300.LastRecordIndex;
                for (int i = readedIndex + 1; i <= index; i++)
                {
                    Opera readRecordOpera = xd2300.DeviceDefine.CreateOpera(XD2300OperaNames.ReadRecord);
                    readRecordOpera.SendPart["RecordIndex"] = i;
                    Task t = new Task(xd2300, readRecordOpera, new ImmediateStrategy());
                    YeHeCommuniServerApp.Default.CommuniSoft.TaskManager.Tasks.Add(t);

                }
            }
            else
            {
                // down
                //
                AddDownTask(xd2300);
            }

            // set new record index
            //
            xd2300.LastRecordIndex = index;
        }
コード例 #23
0
ファイル: XD2402Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="t"></param>
 /// <param name="pr"></param>
 private static void ProcessSuccess(Task task, ParseResult pr)
 {
     XD2402Device xd2402 = task.Device as XD2402Device;
     //if (StringHelper.Equal(task.Opera.Name, XD2402OperaNames.ReadReal))
     //{
     //    ProcessReadReal(xd2402, pr);
     //}
     //else
     if (StringHelper.Equal(task.Opera.Name, XD2402OperaNames.ReadRecordIndex))
     {
         ProcessReadRecordIndex(xd2402, pr);
     }
     else if (StringHelper.Equal(task.Opera.Name, XD2402OperaNames.ReadRecord))
     {
         ProcessReadRecord(pr, xd2402);
     }
 }
コード例 #24
0
ファイル: XD2300Processor.cs プロジェクト: hkiaipc/hunb
 /// <summary>
 /// 
 /// </summary>
 /// <param name="task"></param>
 private void ProcessFail(Task task)
 {
     XD2300Device xd2300 = task.Device as XD2300Device;
     if (StringHelper.Equal(task.Opera.Name, XD2300OperaNames.ReadRecord))
     {
         int recordIndex = Convert.ToInt32(task.Opera.SendPart["RecordIndex"]);
         if (recordIndex >= xd2300.LastRecordIndex)
         {
             AddDownTask(xd2300);
         }
     }
 }
コード例 #25
0
ファイル: UITestLogic.cs プロジェクト: hkiaipc/c2
 /// <summary>
 /// 
 /// </summary>
 public void AddTestTask()
 {
     TestDevice td = this.Soft.HardwareManager.Stations[0].Devices[0] as TestDevice;
     Task t = new Task(td, td.TestOpera, Strategy.CreateCycleStrategy( 1 ));
     this.Soft.TaskManager.Tasks.AddToTail(t);
 }