Пример #1
0
 /// <summary>
 /// 设置灯状态(亮、灭、闪烁)
 /// - 灯的颜色由灯ID已经决定了
 /// </summary>
 /// <param name="lightId"></param>
 /// <param name="onOff"></param>
 public static void SetLightState(int lightId, LightOnOffState onOff)
 {
 }
Пример #2
0
        /// <summary>
        /// 点亮
        /// </summary>
        /// <param name="lightId"></param>
        /// <param name="flash">闪烁</param>
        /// <returns></returns>
        public ErrorCode SetLight(int lightId, LightOnOffState onOff, LightColor color)
        {
            if (!lightSenders.ContainsKey(lightId))
            {
                if (OnError != null)
                {
                    OnError.BeginInvoke(null, "无效灯ID", null, null);
                }
                return(ErrorCode.灯控制_无效灯ID);
            }



            LightState cmd = LightState.OFF;

            switch (color)
            {
            case LightColor.RED:
                switch (onOff)
                {
                case LightOnOffState.ON:
                    cmd = LightState.ON_RED;
                    break;

                case LightOnOffState.BLINK:
                    cmd = LightState.BLINK_RED;
                    break;

                case LightOnOffState.OFF:
                    cmd = LightState.OFF;
                    break;
                }
                break;

            case LightColor.GREEN:
                switch (onOff)
                {
                case LightOnOffState.ON:
                    cmd = LightState.ON_GREEN;
                    break;

                case LightOnOffState.BLINK:
                    cmd = LightState.BLINK_GREEN;
                    break;

                case LightOnOffState.OFF:
                    cmd = LightState.OFF;
                    break;
                }
                break;
            }

            var client = lightSenders[lightId];
            int retry  = 3;

            while (!client.WriteAndCheckResponse(cmd))
            {
                retry--;
                if (retry == 0)
                {
                    string err = string.Format("Light({0}) Retry Send 3 Times Failed", lightId);
                    if (OnError != null)
                    {
                        OnError.BeginInvoke(null, err, null, null);
                    }
                    //3次重发超时异常
                    NLog.LogManager.GetCurrentClassLogger().Error(err);
                    return(ErrorCode.灯控制_发送灯后超时未收到应答);
                }
            }
            return(ErrorCode.成功);
        }