/// <summary> /// 发送短信 /// 发送失败将引发异常 /// </summary> /// <param name="phone">手机号码</param> /// <param name="msg">短信内容</param> public void SendMsg(string phone, string msg) { PDUEncoding pe = new PDUEncoding(); pe.ServiceCenterAddress = msgCenter; //短信中心号码 服务中心地址 string tmp = string.Empty; foreach (CodedMessage cm in pe.PDUEncoder(phone, msg)) { try { //注销事件关联,为发送做准备,本命令直接发送不写Sim卡,CMSS从Sim卡发送,CMGW写Sim卡 _com.DataReceived -= sp_DataReceived; _com.Write("AT+CMGS=" + cm.Length.ToString() + "\r"); _com.ReadTo(">"); _com.DiscardInBuffer(); //事件重新绑定 正常监视串口数据 _com.DataReceived += sp_DataReceived; tmp = SendAT(cm.PduCode + (char)(26)); //26 Ctrl+Z ascii码 } catch (Exception ex) { //打印日志 string errTxt = string.Format(" 短信发送失败:{0}\r\n{1}\r\n{2}", "SendMsg", ex.Message, ex.StackTrace); LogHelpers.Error(errTxt); throw new Exception("短信发送失败:" + ex.ToString()); } //打印日志 LogHelpers.Write(string.Format(" 短信已发送:{0}\r\n{1}:{2}", tmp, phone, msg)); if (tmp.Contains("OK")) { continue; } //打印日志 LogHelpers.Error(string.Format(" 短信发送失败:{0}", tmp)); throw new Exception("短信发送失败:" + tmp); } }
/// <summary> /// 开启服务 /// </summary> public void StartService() { try { // 启动服务... string sResult = ""; IsOpen = srv.Open(out sResult); if (!IsOpen) { LogHelpers.Error("GMS开启服务失败:" + sResult); return; } _quSendMsgThread.Start(); LogHelpers.Write("GMS开启服务成功:" + sResult); } catch (Exception e) { LogHelpers.Error("GMS开启服务失败:" + e.StackTrace); } }