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 /// /// 开启连接 /// /// public bool StartServer() { _lightRelay = new LightRelay(_comName, _baudRate); var ret = _lightRelay.StartServer(); return ret; } /// /// 关闭连接 /// /// 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; /// /// 控制所有灯编码,1 为开启所有灯,2 为关闭所有灯 /// private readonly List _ctrlAllLightCodeList = new List() { "", "01108050000204020F0804A0ED", "011080500002040200080490EE" }; /// /// 开启某一路灯编码,不互斥,index 互相对应 /// private readonly List _openLightCodeList = new List() { "", "01050000FF008C3A", "01050001FF00DDFA", "01050002FF002DFA", "01050003FF007C3A" }; /// /// 关闭某一路灯编码,不互斥,index 互相对应 /// private readonly List _closeLightCodeList = new List() { "", "010500000000CDCA", "0105000100009C0A", "0105000200006C0A", "0105000300003DCA" }; /// /// 互锁编码,控制只有一路灯亮,index 互相对应 /// private readonly List _lockLightOnCodeList = new List() { "", "0110805000020402010804C12E", "0110805000020402020804312E", "0110805000020402040804D12F", "0110805000020402080804112C" }; /// /// 互锁编码,控制只有一路灯灭,index 互相对应 /// private readonly List _lockLightOffCodeList = new List() { "", "01108050000204020E0804F12D", "01108050000204020D0804012D", "01108050000204020B0804E12C", "0110805000020402070804212F" }; #endregion Control Lights Code #region Control Lights /// /// 开启所有灯 /// /// public bool OpenAllLight() { var code = _ctrlAllLightCodeList[1]; return _lightRelay.SendHex(code); } /// /// 关闭所有灯 /// /// public bool CloseAllLight() { var code = _ctrlAllLightCodeList[2]; return _lightRelay.SendHex(code); } /// /// 开启某一路灯 /// /// /// public bool OpenLight(int index) { var codeList = _openLightCodeList; if (!IsIndexValid(codeList, index)) return false; var code = codeList[index]; return _lightRelay.SendHex(code); } /// /// 关闭某一路灯 /// /// /// public bool CloseLight(int index) { var codeList = _closeLightCodeList; if (!IsIndexValid(codeList, index)) return false; var code = codeList[index]; return _lightRelay.SendHex(code); } /// /// 互斥开某一路灯 /// /// /// public bool LockLightOn(int index) { var codeList = _lockLightOnCodeList; if (!IsIndexValid(codeList, index)) return false; var code = codeList[index]; return _lightRelay.SendHex(code); } /// /// 互斥关某一路灯 /// /// /// public bool LockLightOff(int index) { var codeList = _lockLightOffCodeList; if (!IsIndexValid(codeList, index)) return false; var code = codeList[index]; return _lightRelay.SendHex(code); } /// /// 判断功能码是否可以使用 /// /// /// /// private bool IsIndexValid(List codeList, int index) { if (codeList == null) return false; if (index < 1 || index > codeList.Count - 1) return false; return true; } #endregion Control Lights } }