/// <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); } }
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; }
/// <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; }); }
/// <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; } }); }
/// <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; } }); }
/// <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); } } }