Exemple #1
0
        /// <summary>
        /// 发送命令并返回新增命令的id,外部捕获这个id并轮询这条命令的发送状态
        /// </summary>
        /// <param name="Sim">sim卡号码(11位数字,everdigm的sim卡号码后面带三个0,如89001435000)</param>
        /// <param name="Content">命令内容</param>
        /// <param name="sender">命令发送者的ID</param>
        /// <returns>命令记录的id,后续通过这个id查询命令状态</returns>
        private static int SendSMSCommand(TB_Terminal terminal, string Content, int sender)
        {
            string simno = terminal.Sim;

            // 判断Unitel的卡号,前面两位是89,且长度是8位数字
            simno = simno[0] == '8' && simno[1] == '9' ? simno.Substring(0, 8) : simno;
            string ret = SMSUtility.SendSMS(simno, Content);

            using (var bll = new CommandBLL())
            {
                // 查看发送成功与否的状态
                CommandStatus cs = ret.Equals("SUCCESS") ? CommandStatus.SentBySMS : CommandStatus.SentFail;

                // 新建一个命令发送类实体
                TB_Command ct = bll.GetObject();
                simno             = (simno[0] == '8' && simno[1] == '9' && simno.Length < 11) ? (simno + "000") : simno;
                ct.DestinationNo  = simno;
                ct.Status         = (byte)cs;
                ct.Content        = Content;
                ct.ActualSendTime = DateTime.Now;
                ct.Terminal       = terminal.id;
                ct.SendUser       = (0 == sender ? (int?)null : sender);

                var id = bll.Add(ct).id;
                // 保存终端的命令发送条数

                return(id);
            }
        }
Exemple #2
0
 public Command(TB_Command obj)
 {
     Status      = null == obj ? 0 : 1;
     Id          = null == obj ? 0 : obj.id;
     Destination = null == obj ? "" : obj.TB_Terminal.TB_Satellite.CardNo;
     Content     = null == obj ? "" : obj.Content;
 }
Exemple #3
0
 /// <summary>
 /// 更新铱星方式发送命令的状态
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="status"></param>
 private void UpdateIridiumCommand(TB_Command obj, CommandStatus status, CommandBLL bll)
 {
     bll.Update(f => f.id == obj.id, act =>
     {
         act.Status         = (byte)status;
         act.ActualSendTime = DateTime.Now;
     });
 }
Exemple #4
0
 /// <summary>
 /// 更新命令的发送状态
 /// </summary>
 /// <param name="obj"></param>
 private void UpdateCommand(TB_Command obj, CommandStatus status)
 {
     CommandInstance.Update(f => f.id == obj.id, act =>
     {
         act.Status = (byte)status;
         if (status == CommandStatus.SentByTCP)
         {
             act.ActualSendTime = DateTime.Now;
         }
     });
 }
Exemple #5
0
 /// <summary>
 /// 更新命令的发送状态
 /// </summary>
 /// <param name="obj"></param>
 private void UpdateGsmCommand(TB_Command obj, CommandStatus status, CommandBLL bll)
 {
     bll.Update(f => f.id == obj.id, act =>
     {
         act.Status = (byte)status;
         if (status == CommandStatus.SentByTCP)
         {
             act.ActualSendTime = DateTime.Now;
         }
     });
 }
Exemple #6
0
        /// <summary>
        /// 直接发送SMS命令
        /// </summary>
        /// <param name="cmd"></param>
        /// <returns>返回发送是否成功</returns>
        public static bool SendSMSCommand(TB_Command cmd)
        {
            string simno = cmd.DestinationNo;

            // 判断Unitel的卡号,前面两位是89,且长度是8位数字
            simno = simno[0] == '8' && simno[1] == '9' ? simno.Substring(0, 8) : simno;
            string ret = SMSUtility.SendSMS(simno, cmd.Content);
            // 查看发送成功与否的状态
            CommandStatus cs = ret.Equals("SUCCESS") ? CommandStatus.SentBySMS : CommandStatus.SentFail;

            new CommandBLL().Update(f => f.id == cmd.id, act =>
            {
                act.Status         = (byte)cs;
                act.ActualSendTime = DateTime.Now;
            });
            return(cs == CommandStatus.SentBySMS);
        }
 private void HandleIridiumCommand(TB_Command obj, CommandBLL bll)
 {
     if (null != OnIridiumSend)
     {
         IridiumDataEvent e = new IridiumDataEvent();
         e.Data = new IridiumData()
         {
             Payload = CustomConvert.GetBytes(obj.Content),
             IMEI    = obj.TB_Terminal.TB_Satellite.CardNo,
             MTMSN   = GetIridiumMTMSN()
         };
         e.Data.Payload[2] = ProtocolTypes.SATELLITE;
         OnIridiumSend(this, e);
         // 更新命令发送状态
         bll.Update(f => f.id == obj.id, act =>
         {
             act.Status = (byte)CommandStatus.SatelliteHandled;
         });
         if (obj.TB_Terminal.Satellite != (int?)null)
         {
             HandleIridiumMTFlow(obj.TB_Terminal.Satellite.Value, obj.Content.Length / 2);
         }
     }
 }