Browse Source

修改 LightManager

HuiZhou
fajiao 3 years ago
parent
commit
2075f6cac8
  1. 4
      AutoWeightServer/Center/DeviceCenter.cs
  2. 32
      AutoWeightServer/IfManager/Light/ILightManager.cs
  3. 178
      AutoWeightServer/IfManager/Light/Light2Manager.cs
  4. 4
      AutoWeightServer/IfManager/Light/LightManager.cs

4
AutoWeightServer/Center/DeviceCenter.cs

@ -31,7 +31,7 @@ namespace EC.AutoWeightServer.Center
/// <summary> /// <summary>
/// 灯光控制 /// 灯光控制
/// </summary> /// </summary>
internal LightManager LightManager { get; set; } internal ILightManager LightManager { get; set; }
/// <summary> /// <summary>
/// 指纹识别 /// 指纹识别
@ -218,7 +218,7 @@ namespace EC.AutoWeightServer.Center
{ {
var com = ServerConfig.LightRelayCom; var com = ServerConfig.LightRelayCom;
var rate = ServerConfig.LightRelayBaudRate; var rate = ServerConfig.LightRelayBaudRate;
LightManager = new LightManager(com, rate); LightManager = new Light2Manager(com, rate);
LightManager.StartServer(); LightManager.StartServer();
} }

32
AutoWeightServer/IfManager/Light/ILightManager.cs

@ -0,0 +1,32 @@
namespace EC.AutoWeightServer.IfManager.Light
{
public interface ILightManager
{
#region Start & Stop Server
public bool StartServer();
public bool StopServer();
public bool IsOpen();
#endregion Start & Stop Server
#region Control Lights
public bool OpenAllLight();
public bool CloseAllLight();
public bool OpenLight(int index);
public bool CloseLight(int index);
public bool LockLightOn(int index);
public bool LockLightOff(int index);
#endregion Control Lights
}
}

178
AutoWeightServer/IfManager/Light/Light2Manager.cs

@ -0,0 +1,178 @@
using System.Collections.Generic;
namespace EC.AutoWeightServer.IfManager.Light
{
public class Light2Manager : ILightManager
{
private LightRelay _lightRelay;
private string _comName;
private int _baudRate;
public Light2Manager()
{
}
public Light2Manager(string comName, int baudRate)
{
_comName = comName;
_baudRate = baudRate;
}
#region Start & Stop Server
/// <summary>
/// 开启连接
/// </summary>
/// <returns></returns>
public bool StartServer()
{
_lightRelay = new LightRelay(_comName, _baudRate);
var ret = _lightRelay.StartServer();
return ret;
}
/// <summary>
/// 关闭连接
/// </summary>
/// <returns></returns>
public bool StopServer()
{
_lightRelay?.StopServer();
_lightRelay = null;
return true;
}
public bool IsOpen()
{
return _lightRelay?.IsOpen() ?? false;
}
#endregion Start & Stop Server
#region Control Lights Code
//private int num = 0xFF;
/// <summary>
/// 控制所有灯编码,1 为开启所有灯,2 为关闭所有灯
/// </summary>
private readonly List<string> _ctrlAllLightCodeList = new List<string>() { "", "01108050000204020F0804A0ED", "011080500002040200080490EE" };
/// <summary>
/// 开启某一路灯编码,不互斥,index 互相对应
/// </summary>
private readonly List<string> _openLightCodeList = new List<string>() { "", "01050000FF008C3A", "01050001FF00DDFA", "01050002FF002DFA", "01050003FF007C3A" };
/// <summary>
/// 关闭某一路灯编码,不互斥,index 互相对应
/// </summary>
private readonly List<string> _closeLightCodeList = new List<string>() { "", "010500000000CDCA", "0105000100009C0A", "0105000200006C0A", "0105000300003DCA" };
/// <summary>
/// 互锁编码,控制只有一路灯亮,index 互相对应
/// </summary>
private readonly List<string> _lockLightOnCodeList = new List<string>() { "", "0110805000020402010804C12E", "0110805000020402020804312E", "0110805000020402040804D12F", "0110805000020402080804112C" };
/// <summary>
/// 互锁编码,控制只有一路灯灭,index 互相对应
/// </summary>
private readonly List<string> _lockLightOffCodeList = new List<string>() { "", "01108050000204020E0804F12D", "01108050000204020D0804012D", "01108050000204020B0804E12C", "0110805000020402070804212F" };
#endregion Control Lights Code
#region Control Lights
/// <summary>
/// 开启所有灯
/// </summary>
/// <returns></returns>
public bool OpenAllLight()
{
var code = _ctrlAllLightCodeList[1];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 关闭所有灯
/// </summary>
/// <returns></returns>
public bool CloseAllLight()
{
var code = _ctrlAllLightCodeList[2];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 开启某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool OpenLight(int index)
{
var codeList = _openLightCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 关闭某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool CloseLight(int index)
{
var codeList = _closeLightCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 互斥开某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool LockLightOn(int index)
{
var codeList = _lockLightOnCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 互斥关某一路灯
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public bool LockLightOff(int index)
{
var codeList = _lockLightOffCodeList;
if (!IsIndexValid(codeList, index))
return false;
var code = codeList[index];
return _lightRelay.SendHex(code);
}
/// <summary>
/// 判断功能码是否可以使用
/// </summary>
/// <param name="codeList"></param>
/// <param name="index"></param>
/// <returns></returns>
private bool IsIndexValid(List<string> codeList, int index)
{
if (codeList == null)
return false;
if (index < 1 || index > codeList.Count - 1)
return false;
return true;
}
#endregion Control Lights
}
}

4
AutoWeightServer/IfManager/Light/LightManager.cs

@ -2,7 +2,7 @@
namespace EC.AutoWeightServer.IfManager.Light namespace EC.AutoWeightServer.IfManager.Light
{ {
public class LightManager public class LightManager : ILightManager
{ {
private LightRelay _lightRelay; private LightRelay _lightRelay;
private string _comName; private string _comName;
@ -51,8 +51,6 @@ namespace EC.AutoWeightServer.IfManager.Light
#region Control Lights Code #region Control Lights Code
//private int num = 0xFF;
/// <summary> /// <summary>
/// 控制所有灯编码,1 为开启所有灯,2 为关闭所有灯 /// 控制所有灯编码,1 为开启所有灯,2 为关闭所有灯
/// </summary> /// </summary>

Loading…
Cancel
Save