ARSScore.cs 8.71 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GeneralLib;

namespace SunVoteARSPPT
{
    public class ARSScore : IResponse
    {
        /// <summary>
        /// 数字评分类
        /// </summary>
        public SunVote.Number Number = null;

        /// <summary>
        /// 构造函数
        /// </summary>
        public ARSScore()
        {
            Number = new SunVote.Number();
            Number.KeyStatus += new SunVote.INumberEvents_KeyStatusEventHandler(Number_KeyStatus);
            //杨斌 2015-01-09
            Number.KeyStatusSN += new SunVote.INumberEvents_KeyStatusSNEventHandler(Number_KeyStatusSN);

            //PVS事件。杨斌 2015-03-17
            FrmPvsServer.GetFrmPvs().OnKeyVote += myPVS_KeyVote;

            TagSet = new TagSet();
        }

        void Number_KeyStatusSN(string BaseTag, string KeySN, string KeyValue, double KeyTime)
        {
            KeyValue = ConvertOper.DoNumberString(KeyValue);//杨斌 2013-08-29

            ResponsePar ObjResponseValue = new ResponsePar();
            ObjResponseValue.BaseTag = BaseTag;
            ObjResponseValue.KeyID = KeySN;
            ObjResponseValue.KeyValue = KeyValue;
            ObjResponseValue.Speed = KeyTime;
            if (ResponseEventHander != null)
                ResponseEventHander(ObjResponseValue);
        }

        void myPVS_KeyVote(int ID, int iMode, string sInfo)
        {
            string KeyValue = ConvertOper.DoNumberString(sInfo);

            ResponsePar ObjResponseValue = new ResponsePar();
            //ObjResponseValue.BaseTag = BaseTag;
            ObjResponseValue.KeyID = ID.ToString();
            ObjResponseValue.KeyValue = KeyValue;
            ObjResponseValue.Speed = 0;

            if (ResponseEventHander != null)
                ResponseEventHander(ObjResponseValue);
        }

        /// <summary>
        /// 键盘状态
        /// </summary>
        /// <param name="BaseTag"></param>
        /// <param name="KeyID"></param>
        /// <param name="KeyValue"></param>
        /// <param name="KeyTime"></param>
        void Number_KeyStatus(string BaseTag, int KeyID, string KeyValue, double KeyTime)
        {
            Number_KeyStatusSN(BaseTag, KeyID.ToString(), KeyValue, KeyTime);
        }

        #region IResponse 成员

        public event ResponseEventHander ResponseEventHander;

        /// <summary>
        /// 修改:杨斌 2012-06-27
        /// </summary>
        public void Start()
        {
            //杨斌 2015-12-10
            int iModifyMode = (TagSet.GetValue(TagKey.KeypadPara_ModifyMode).ToInt == 0 ? 1 : 0);

            if (GlobalInfo.GetSdkType() == 0)
            {
                Number.BaseConnection = BaseConnection;

                //修改模式 0:不允许修改,1:允许修改
                Number.ModifyMode = iModifyMode;//杨斌 2015-12-10
                
                //保密模式。杨斌 2016-07-21
                Number.SecrecyMode = TagSet.GetValue(TagKey.KeypadPara_SecrecyMode).ToInt;
                //默认值
                Number.Default = 0;
                //数值模式 0:不限定规则,1:整数评分 1-100
                Number.Mode = 0;

                int decCount = 0;//小数位

                if (ResponseType == ResponseType.Score)
                {
                    string lowRange = TagSet.GetValue(TagKey.Score_LowRange).Value;
                    string highRange = TagSet.GetValue(TagKey.Score_HighRange).Value;

                    //最小值
                    Number.Min = (lowRange.Trim() == "") ? 0 : (Convert.ToInt32(lowRange));
                    //最大值
                    Number.Max = (highRange.Trim() == "") ? 99999 : (Convert.ToInt32(highRange));

                    decCount = TagSet.GetValue(TagKey.Score_DecimalFormat).ToInt;
                }
                if (ResponseType == ResponseType.Poll)
                {
                    //最小值
                    Number.Min = 0;
                    //最大值
                    Number.Max = 999999;
                }
                if (ResponseType == ResponseType.Number)//杨斌 2012-03-14
                {
                    string lowRange = TagSet.GetValue(TagKey.Number_LowRange).Value;
                    string highRange = TagSet.GetValue(TagKey.Number_HighRange).Value;

                    //最小值
                    Number.Min = (lowRange.Trim() == "") ? 0 : (Convert.ToInt32(lowRange));
                    //最大值
                    Number.Max = (highRange.Trim() == "") ? 99999999 : (Convert.ToInt32(highRange));

                    decCount = TagSet.GetValue(TagKey.Number_DecimalFormat).ToInt;
                }
                if (ResponseType == ResponseType.SignIn)
                {
                    Number.Min = 0;
                    Number.Max = 999999999;
                }
                ////杨斌 2012-06-27 M52评分上下限,只支持0-100之内的整数评分
                //if ((Number.Min >= 0) && (Number.Max <= 100) && (decCount == 0))
                //    Number.Mode = 1;

                //启动模式
                Number.StartMode = 1;
                Number.Start();
            }
            else if (GlobalInfo.GetSdkType() == 1)
            {
                string lowRange = "";
                string highRange = "";
                double min = 0;
                double max = 0;
                int dec = 0;

                int pvsVoteMode = 0;
                string pvsVoteSetting = "";
                if (ResponseType == ResponseType.Score)
                {
                    lowRange = TagSet.GetValue(TagKey.Score_LowRange).Value;
                    highRange = TagSet.GetValue(TagKey.Score_HighRange).Value;

                    //最小值
                    min = (lowRange.Trim() == "") ? 0 : (Convert.ToInt32(lowRange));
                    //最大值
                    max = (highRange.Trim() == "") ? 0 : (Convert.ToInt32(highRange));

                    dec = TagSet.GetValue(TagKey.Score_DecimalFormat).ToInt;

                    int aMax = 255;
                    if (min > aMax)
                        min = aMax;

                    if (max > aMax)
                        max = aMax;

                    if (dec > 9)
                        dec = 9;

                    pvsVoteMode = 6;
                    pvsVoteSetting = 1 + "," + min + "," + max + "," + dec;
                }
                if (ResponseType == ResponseType.Poll)
                {
                    min = 0;
                    max = 0;
                    dec = 0;

                    pvsVoteMode = 6;
                    pvsVoteSetting = 1 + "," + min + "," + max + "," + dec;
                }
                if (ResponseType == ResponseType.Number)
                {
                    lowRange = TagSet.GetValue(TagKey.Number_LowRange).Value;
                    highRange = TagSet.GetValue(TagKey.Number_HighRange).Value;

                    //最小值
                    min = (lowRange.Trim() == "") ? 0 : (Convert.ToInt32(lowRange));
                    //最大值
                    max = (highRange.Trim() == "") ? 0 : (Convert.ToInt32(highRange));

                    min = 0;
                    max = 0;
                    dec = 9;

                    dec = TagSet.GetValue(TagKey.Number_DecimalFormat).ToInt;

                    pvsVoteMode = 6;
                    pvsVoteSetting = 1 + "," + min + "," + max + "," + dec;
                }
                if (ResponseType == ResponseType.SignIn)
                {
                    min = 0;
                    max = 0;
                    dec = 0;

                    pvsVoteMode = 6;
                    pvsVoteSetting = 1 + "," + min + "," + max + "," + dec;
                }

                ////杨斌 2015-05-13
                //FrmPvsServer.GetFrmPvs().VoteStart(15, "0");
                //FrmPvsServer.GetFrmPvs().VoteStop();

                FrmPvsServer.GetFrmPvs().VoteStart(pvsVoteMode, pvsVoteSetting, iModifyMode);
            }
        }

        public void Stop()
        {
            if (GlobalInfo.GetSdkType() == 0)
            {
                Number.Stop();
            }
            else if (GlobalInfo.GetSdkType() == 1)
            {
                //for (int i = 1; i <= 3; i++)
                {
                    FrmPvsServer.GetFrmPvs().VoteStop();
                }
            }
        }
        /// <summary>
        /// 基站连接类
        /// </summary>
        public SunVote.BaseConnection BaseConnection { get; set; }
        /// <summary>
        /// 幻灯片Tag值
        /// </summary>
        public TagSet TagSet { get; set; }
        /// <summary>
        /// 反馈类型
        /// </summary>
        public ResponseType ResponseType { get; set; }

        #endregion
    }
}