ScanWarningServiceClient.cs 3.11 KB
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 : FObjServiceClient, IScanWarningService
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="serviceId"></param>
        public ScanWarningServiceClient(UInt32 serviceId) : base(serviceId) { }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="serviceId"></param>
        /// <param name="connName"></param>
        public ScanWarningServiceClient(UInt32 serviceId, string connName) : base(serviceId, connName) { }


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

        /// <summary>
        /// 自动目标值
        /// </summary>
        public bool IsAutoTarget { get; set; }

        /// <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;
            p.isAutoTarget = IsAutoTarget;
            string json = JsonConvert.SerializeObject(p);

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


        public override void ConnectNotify(IFConn from)
        {
            base.ConnectNotify(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;
                        IsAutoTarget = p.isAutoTarget;
                    } break;
            }
        }
        public override void PushInfo(IFConn from, uint srcid, ushort infoid, byte[] infodata)
        {
            PushGetValue(from, srcid, infoid, infodata);
        }


    }
}