/// <summary> /// 设置灯状态(亮、灭、闪烁) /// - 灯的颜色由灯ID已经决定了 /// </summary> /// <param name="lightId"></param> /// <param name="onOff"></param> public static void SetLightState(int lightId, LightOnOffState onOff) { }
/// <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.成功); }