Beispiel #1
0
 /// <summary>
 /// 向某个ip发送命令,这里的ip必须是底层可以执行动作的ip
 /// </summary>
 /// <param name="ip"></param>
 /// <param name="action"></param>
 public void SendAction(string ip, SmAction action)
 {
     using (ActionLock.Lock()) {
         if (ActionClientDict.TryGetValue(ip, out var state))
         {
             try {
                 tcpServer.Send(state, SmParamApi.BuildAlarmPackage(state.ModuleAddr, action));
                 Logger.Debug($"发送命令 {Enum.GetName(typeof(SmAction), action)} 成功 {ip}");
                 ActionCache[ip] = SmAction.NoAction;
             } catch {
                 ActionCache[ip] = action;
                 YUtil.RecoveryTimeout(ScanActionTimer);
             }
         }
     }
 }
Beispiel #2
0
 /// <summary>
 /// 构建报警命令包
 /// </summary>
 /// <param name="addr"></param>
 /// <param name="operate">可设置打开或者关闭报警</param>
 /// <param name="aimType"></param>
 /// <returns></returns>
 internal static byte[] BuildAlarmPackage(List <byte> addr, SmAction operate,
                                          byte aimType = (byte)SmFrame.IndustryAimType)
 {
     byte[] sendBytes = new byte[] { (byte)operate };
     return(BuildActionPackage(addr, (byte)SmActionFrame.Alarm, sendBytes.ToList(), aimType));
 }
Beispiel #3
0
 /// <summary>
 /// 构建报警命令报警包
 /// </summary>
 /// <param name="addr"></param>
 /// <param name="operate">可设置打开或者关闭报警</param>
 /// <param name="aimType"></param>
 /// <returns></returns>
 public static byte[] BuildAlarmPackage(List <byte> addr, SmAction operate,
                                        byte aimType = (byte)SmFrame.IndustryAimType)
 {
     return(SmPackage.BuildAlarmPackage(addr, operate, aimType));
 }