Ejemplo n.º 1
0
 public void Handle(AppSocketSession session, EInstruction instruction)
 {
     byte[] content = null;
     switch (instruction.InstructionType)
     {
         case EnumInstructionType.BreakOilOrPower:
             content = Encoding.ASCII.GetBytes("DYD,000000#");
             break;
         case EnumInstructionType.RecoveryBreakOilOrPower:
             content = Encoding.ASCII.GetBytes("HFYD,000000#");
             break;
     }
     if (content != null && content.Length > 0)
     {
         var cmd = KksCommon.CreateBytesPackage("80", session.GetSerialNumber(), (bw) =>
         {
             //指令长度
             bw.WriteInt(content.Length);
             //服务器标志位
             bw.WriteInt32(GetSerialNumber());
             //指令内容
             bw.Write(content);
             //语言
             bw.Write(new byte[] {0x00, 0x01});
         });
         session.SendAsync(cmd);
         _logger.WarnFormat("开始执行指令{0}-{1}-{2}", instruction.DeviceId, instruction.InstructionType.GetDisplayName(), ByteHelper.ConvertBytesToStringByHex(cmd));
     }
     else
     {
         _logger.WarnFormat("发送指令失败,无效指令!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 华宝A5断油断电指令 H5
        /// </summary>
        /// <param name="session"></param>
        /// <param name="instruction"></param>
        public void HandleH5(AppSocketSession session, EInstruction instruction)
        {
            var deviceGpsCodeNoPrefix = session["DeviceGpsCodeNoPrefix"] as string;
            if (deviceGpsCodeNoPrefix == null)
            {
                _logger.WarnFormat("发送指令失败!车辆不在线!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }

            List<byte> content = new List<byte>();
            switch (instruction.InstructionType)
            {
                case EnumInstructionType.BreakOilOrPower:
                    content.Add(0x01);//正常断油 必须速度小于 20km/h
                    //content.Add(0x05);//强制断油
                    break;
                case EnumInstructionType.RecoveryBreakOilOrPower:
                    content.Add(0x00);
                    break;
            }
            content.AddRange(ByteHelper.ConvertDateTimeToBytesByBcd(DateTime.Now.AddSeconds(5)));
            if (content.Count > 0)
            {
                var cmd = T808Common.CreateBytesPackage("A006", deviceGpsCodeNoPrefix, GetSerialNumber(), (bw) =>
                {
                    bw.Write(content.ToArray());
                });
                session.SendAsync(cmd);
                _logger.WarnFormat("开始执行指令{0}-{1}-{2}", instruction.DeviceId, instruction.InstructionType.GetDisplayName(), ByteHelper.ConvertBytesToStringByHex(cmd));
            }
            else
            {
                _logger.WarnFormat("发送指令失败,无效指令!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }
        }
Ejemplo n.º 3
0
 public override void OnData(IObjectContainer container,AppSocketSession session, AppSocketData data)
 {
     try
     {
         container.Resolve<IRawDataService>().Log(session, ByteHelper.ConvertBytesToStringByHex(data.RawData, ","));
     }
     catch (Exception ex)
     {
         container.Resolve<ILogger>().Error("记录原始数据错误", ex);
     }
 }
Ejemplo n.º 4
0
 public override void OnData(IObjectContainer container,AppSocketSession session, AppSocketData data)
 {
     try
     {
         container.Resolve<IRawDataService>().Log(session, Encoding.UTF8.GetString(data.RawData));
     }
     catch (Exception ex)
     {
         container.Resolve<ILogger>().Error("记录原始数据错误", ex);
     }
 }
Ejemplo n.º 5
0
 public void Log(AppSocketSession session, string data)
 {
     if (!data.HasValue() || session == null)
     {
         return;
     }
     _buffer.Add(new RawData()
     {
         Path = GetSavePath(session),
         CreateTime = DateTime.Now,
         Data = string.Format("{0}---{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), data)
     });
 }
Ejemplo n.º 6
0
 private string GetSavePath(AppSocketSession session)
 {
     var deviceGpsCode = session["DeviceGpsCode"] as string;
     var name = deviceGpsCode.HasValue() ? deviceGpsCode + ".log" : "others.log";
     var path = Path.Combine(_path, DateTime.Now.ToString("yyyy-MM-dd"));
     try
     {
         if (!Directory.Exists(path))
         {
             Directory.CreateDirectory(path);
         }
     }
     catch
     {
         _path = @"C:\log\raw";
         path = Path.Combine(_path, DateTime.Now.ToString("yyyy-MM-dd"));
     }
     return Path.Combine(path, name);
 }
Ejemplo n.º 7
0
        public void Handle(AppSocketSession session, EInstruction instruction)
        {
            var deviceGpsCodeNoPrefix = session["DeviceGpsCodeNoPrefix"] as string;
            if (deviceGpsCodeNoPrefix == null)
            {
                _logger.WarnFormat("发送指令失败!车辆不在线!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }
            
            var cmd = new List<string>();
            switch (instruction.InstructionType)
            {
                case EnumInstructionType.BreakOilOrPower:
                    cmd.Add("#1:{0}:1:*".GetFormat(deviceGpsCodeNoPrefix));
                    cmd.Add(ByteHelper.ConvertUInt32ToHexString(GetSerialNumber()));
                    cmd.Add("CC");
                    cmd.Add(ByteHelper.ConvertDateToHexString(DateTime.Now));
                    cmd.Add(ByteHelper.ConvertTimeToHexString(DateTime.Now));
                    cmd.Add("Y1L1#");
                    session.SendAsync(Encoding.UTF8.GetBytes(string.Join(",", cmd)));
                    break;
                case EnumInstructionType.RecoveryBreakOilOrPower:
                    cmd.Add("#1:{0}:1:*".GetFormat(deviceGpsCodeNoPrefix));
                    cmd.Add(ByteHelper.ConvertUInt32ToHexString(GetSerialNumber()));
                    cmd.Add("CC");
                    cmd.Add(ByteHelper.ConvertDateToHexString(DateTime.Now));
                    cmd.Add(ByteHelper.ConvertTimeToHexString(DateTime.Now));
                    cmd.Add("Y2L2#");
                    
                    break;
            }

            if (cmd.Count > 0)
            {
                session.SendAsync(Encoding.UTF8.GetBytes(string.Join(",", cmd)));
                _logger.WarnFormat("开始执行指令{0}-{1}-{2}", instruction.DeviceId,instruction.InstructionType.GetDisplayName(), string.Join(",", cmd));
            }
            else
            {
                _logger.WarnFormat("发送指令失败,无效指令!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }

        }
Ejemplo n.º 8
0
        public override void OnData(IObjectContainer container,AppSocketSession session, AppSocketData data)
        {
            try
            {
                var log = string.Empty;
                if (data.RawData[0] == 0x2a)
                {
                    log = Encoding.ASCII.GetString(data.RawData);
                }
                else
                {
                    log = ByteHelper.ConvertBytesToStringByHex(data.RawData, ",");
                }

                container.Resolve<IRawDataService>().Log(session, log);
            }
            catch (Exception ex)
            {
                container.Resolve<ILogger>().Error("记录原始数据错误", ex);
            }
        }
Ejemplo n.º 9
0
        public void Handle(AppSocketSession session, EInstruction instruction)
        {
            //开油:*HQ,0000,S20,095517,1,0#
            //断油:*HQ,0000,S20,095517,1,1#"

            var deviceGpsCodeNoPrefix = session["DeviceGpsCodeNoPrefix"] as string;
            if (deviceGpsCodeNoPrefix == null)
            {
                _logger.WarnFormat("发送指令失败!车辆不在线!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }

            var cmd = $"*HQ,0000,S20,{DateTime.Now.ToString("HHmmss")},1,{(instruction.InstructionType==EnumInstructionType.BreakOilOrPower ? "1" : "0")}#";
            if (cmd.Length > 0)
            {
                session.SendAsync(Encoding.ASCII.GetBytes(string.Join(",", cmd)));
                _logger.WarnFormat("开始执行指令{0}-{1}-{2}", instruction.DeviceId, instruction.InstructionType.GetDisplayName(), string.Join(",", cmd));
            }
            else
            {
                _logger.WarnFormat("发送指令失败,无效指令!{0}-{1}", instruction.DeviceId, instruction.InstructionType.GetDisplayName());
            }

        }
Ejemplo n.º 10
0
 public virtual void Handle(AppSocketSession session,AppSocketData data)
 {
     _socketProtocol.Excute(session, data);
 }
Ejemplo n.º 11
0
 protected virtual void OnNewAppSession(NewAppSessionArgs newAppSessionArgs)
 {
     try
     {
         AppSocketSession session = new AppSocketSession(newAppSessionArgs);
         session.Closed += OnCloseSession;
         _socketSessionManager.Add(session);
         _logger.DebugFormat("创建Session[{0}]成功!", session.Id);
         _logger.DebugFormat("当前Session数{0}!", _socketSessionManager.Count);
     }
     catch (Exception ex)
     {
         _logger.Error(ex);
     }
 }
Ejemplo n.º 12
0
 public void Handle(AppSocketSession session, EInstruction instruction)
 {
     
 }
Ejemplo n.º 13
0
        public void Handle(AppSocketSession session, EInstruction instruction)
        {
            var deviceGpsTypeName = session["DeviceGpsTypeName"] as string;
            if(!deviceGpsTypeName.HasValue()) return;

            switch (deviceGpsTypeName)
            {
                case "H1"://沃达孚
                    HandleH1(session,instruction);
                    break;
                case "H5"://华宝A5
                    HandleH5(session, instruction);
                    break;
            }
        }
Ejemplo n.º 14
0
 protected virtual void BeginConnectAsync(SocketAsyncEventArgs socketAsyncEventArgs)
 {
     try
     {
         if (socketAsyncEventArgs.SocketError == SocketError.Success)
         {
             _session = new AppSocketSession(new NewAppSessionArgs(socketAsyncEventArgs));
             _isConnect = true;
             _autoReset.Set();
             OnConnecting(new ConnectArgs(true));
             byte[] data = new byte[4098];
             socketAsyncEventArgs.SetBuffer(data, 0, data.Length);
             if (!_socket.ReceiveAsync(socketAsyncEventArgs))
             {
                 BeginReceiveAsync(socketAsyncEventArgs);
             }
         }
         else
         {
             _isConnect = false;
             _autoReset.Set();
             OnConnecting(new ConnectArgs(false));
         }
     }
     catch (Exception ex)
     {
         _logger.Error(ex);
     }
 }
Ejemplo n.º 15
0
 public CloseSessionArgs(AppSocketSession session)
 {
     Session = session;
 }
Ejemplo n.º 16
0
 public ReceivedDataArgs(AppSocketSession session, byte[] rawData)
 {
     Session = session;
     RawData = rawData;
 }
Ejemplo n.º 17
0
 public DisConnectArgs(AppSocketSession session)
 {
     Session = session;
 }
Ejemplo n.º 18
0
 public virtual void Add(AppSocketSession session)
 {
     _sesstions.TryAdd(session.Id, session);
 }