public GsmServer(string Portname, int Baudrate, string serviceID) { PortName = Portname; BaudRate = Baudrate; ServiceID = serviceID; Gs = GsmBussiness.GetGsmMobileList(); GQ = new GsmQueue(); GT = new GsmThread(this); }
//回复数据的方法 void SendData(object sender) { try { GsmBussiness.SendData(gsm); } catch (Exception ex) { throw; } }
//召测方法 void SendData() { Thread.Sleep(30 * 1000); while (true) { if (gsm.gm.IsOpen)//串口打开 { try { //Console.WriteLine("AAAAAAAAA"+ DateTime.Now ); //GsmBussiness.SendData(gsm); GsmBussiness.SendCommand(gsm); //Console.WriteLine("BBBBBBBBB" + DateTime.Now); } catch (Exception ex) { Service.ServiceControl.log.Error(DateTime.Now + ex.ToString()); } } Thread.Sleep(1000); } }
public void Start() { //第一次启动 if (gm == null) { gm = new GsmModem(); gm.ComPort = PortName; gm.BaudRate = BaudRate; gm.AutoDelMsg = true; gm.SmsRecieved += new EventHandler(gm_SmsRecieved); gm.Open(12 * 1000); GsmBussiness.ToQgsd(); } //重启 else if (gm != null && !gm.IsOpen) { try { Gs = GsmBussiness.GetGsmMobileList(); gm = new GsmModem(); gm.ComPort = PortName; gm.BaudRate = BaudRate; gm.AutoDelMsg = true; gm.SmsRecieved += new EventHandler(gm_SmsRecieved); gm.Open(12 * 1000); GsmBussiness.ToQgsd(); } catch (Exception ex) { Service.ServiceControl.log.Warn(DateTime.Now + "gsm服务(" + gm.ComPort + ":" + gm.BaudRate + ")重启失败!", ex); } } }
//读取GSM卡里的指定信息 void ReadGSMCard() { Thread.Sleep(60 * 1000); //30秒后开始执行该方法 while (true) //串口打开 { lock (gsm) if (gsm.gm.IsOpen) { //与串口交互后,如有异常重启串口 Restart(gsm); if (gsm.GQ.Qgsd.Count == 0) //无召测命令 { lock (gsm.GQ.Qgsd) //锁住召测列表避免发送信息与读取信息同时进行,导致异常 { string sResult = ""; try { //从卡里读出未读(0)信息 List <GSMMODEM.DecodedMessage> dms = gsm.gm.GetReceiveMsg(0, out sResult); foreach (var item in dms) { GSMMODEM.DecodedMessage dm = item; gsm.gm.DeleteMsgByIndex(dm.SmsIndex); //根据索引删除 byte[] bt = null; if (Service.ServiceControl.wrx.XMLObj.HEXOrASC == "HEX") { bt = Service.EnCoder.HexStrToByteArray(dm.SmsContent); } else { //bt = Encoding.ASCII.GetBytes(dm.SmsContent); bt = Encoding.UTF8.GetBytes(dm.SmsContent); } GsmBussiness.WriteGrdQ(gsm, dm.PhoneNumber, dm.SendTime, bt); //写入透传列表 Service.ServiceBussiness.WriteQDM(bt); //写入日志 Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.GSM, dm.PhoneNumber, bt); //解析数据包(更新手机号列表) GsmBussiness.ResolvePacket(gsm); Thread.Sleep(200); } } catch (Exception ex) { Service.ServiceControl.log.Error(DateTime.Now + "读出卡中未读信息出现异常," + ex.ToString()); } try { Thread.Sleep(200); //从卡里读出已读(1)信息 List <GSMMODEM.DecodedMessage> dms = gsm.gm.GetReceiveMsg(1, out sResult); foreach (var item in dms) { GSMMODEM.DecodedMessage dm = item; gsm.gm.DeleteMsgByIndex(dm.SmsIndex);//根据索引删除 byte[] bt = null; if (Service.ServiceControl.wrx.XMLObj.HEXOrASC == "HEX") { bt = Service.EnCoder.HexStrToByteArray(dm.SmsContent); } else { //bt = Encoding.ASCII.GetBytes(dm.SmsContent); bt = Encoding.UTF8.GetBytes(dm.SmsContent); } GsmBussiness.WriteGrdQ(gsm, dm.PhoneNumber, dm.SendTime, bt); //写入透传列表 Service.ServiceBussiness.WriteQDM(bt); //写入日志 Service.ServiceControl.LogInfoToTxt(Service.ServiceEnum.NFOINDEX.GSM, dm.PhoneNumber, bt); //解析数据包(更新手机号列表) GsmBussiness.ResolvePacket(gsm); Thread.Sleep(200); } } catch (Exception ex) { Service.ServiceControl.log.Error(DateTime.Now + "读出卡中已读信息出现异常," + ex.ToString()); } Thread.Sleep(800); } } } else { //重启串口 gsm.Stop(); Thread.Sleep(3 * 1000); gsm.Start(); Console.WriteLine(DateTime.Now + " " + "||||Restart!"); Service.ServiceControl.log.Warn(DateTime.Now + "串口状态为关闭,Restart!"); } Thread.Sleep(30 * 1000); } }