ScanWarningServiceClient.cs 3.06 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

using FObjBase;
using FLY.Thick.Blowing.IService;
using FLY.Thick.Blowing.OBJ_INTERFACE;
using Newtonsoft.Json;

namespace FLY.Thick.Blowing.Client
{
    public class ScanWarningServiceClient : FObj, IScanWarningService
    {
        IFConn mConn;
        UInt32 mServerID;

        public ScanWarningServiceClient(UInt32 serverid)
        {
            mServerID = serverid;
        }


        #region IScanWarningService
        /// <summary>
        /// 使能
        /// </summary>
        public bool Enable { get; set; }

31 32 33 34 35
        /// <summary>
        /// 自动目标值
        /// </summary>
        public bool IsAutoTarget { get; set; }

36 37 38 39 40 41 42 43 44 45 46
        /// <summary>
        /// 连续N个点,大于规格线(公差)才算报警
        /// </summary>
        public int AlarmCnt_Tolerance { get; set; }
        #endregion

        public void Apply() 
        {
            SCANWARNING_OBJ_INTERFACE.Pack_Params p = new SCANWARNING_OBJ_INTERFACE.Pack_Params();
            p.alarmcnt_tolerance = AlarmCnt_Tolerance;
            p.enable = Enable;
47
            p.isAutoTarget = IsAutoTarget;
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
            string json = JsonConvert.SerializeObject(p);

            //获取所有数据,设置推送
            CurrObjSys.SetValueEx(
                mConn, mServerID, ID, 
                SCANWARNING_OBJ_INTERFACE.SET_PARAMS,
                Misc.Converter.StringToBytes(json)
                );
        }

        public override void Dispose()
        {
            CurrObjSys.ObjRemove(
                this, mConn);
        }
        public override void ConnectNotify(IFConn from)
        {
            mConn = from;
            if (from.IsConnected)
            {
                //获取所有数据,设置推送
                CurrObjSys.GetValueEx(
                    mConn, mServerID, ID, 
                    SCANWARNING_OBJ_INTERFACE.GET_PARAMS);
                CurrObjSys.SenseConfigEx(mConn, mServerID, ID, 
                    0xffffffff, SENSE_CONFIG.ADD);
                    
            }
        }
        public override void PushGetValue(IFConn from, uint srcid, ushort memid, byte[] infodata)
        {
            switch (memid)
            {
                case SCANWARNING_OBJ_INTERFACE.GET_PARAMS:
                    {
                        string json = Misc.Converter.BytesToString(infodata);

                        SCANWARNING_OBJ_INTERFACE.Pack_Params p = JsonConvert.DeserializeObject<SCANWARNING_OBJ_INTERFACE.Pack_Params>(json);

                        AlarmCnt_Tolerance = p.alarmcnt_tolerance;
                        Enable = p.enable;
89
                        IsAutoTarget = p.isAutoTarget;
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
                    } break;
            }
        }
        public override void PushInfo(IFConn from, uint srcid, ushort infoid, byte[] infodata)
        {
            PushGetValue(from, srcid, infoid, infodata);
        }

        #region INotifyPropertyChanged 成员

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }
}