public PDUData getSms(int id) { this.Write("AT+CMGR=" + id + endFlag); this.ReadTo("AT+CMGR=" + id + endFlag); this.ReadTo(endFlag); PDUData data = null; string line; while (true) { line = this.ReadTo(endFlag); Console.WriteLine(line); if (line.StartsWith("OK")) { return(data); } else if (line.StartsWith("ERROR")) { throw new Exception("获取短信[" + id + "]失败"); } else if (line.StartsWith("+CMGR:")) { line = this.ReadTo(endFlag); Console.WriteLine(line); data = PDUData.parseSmsDeliverPUD(line); } } }
public static PDUData parseSmsDeliverPUD(string pduStr) { PDUData data = new PDUData(); data.pduStr = pduStr; try { string[] charsArray = toCharsArray(pduStr); int index = 0; int scaLen = Convert.ToInt32(charsArray[index], 16); data.sca = charsArray[index] + string.Join("", charsArray, index + 1, scaLen); index += scaLen + 1; if (index > charsArray.Length) { return(data); } data.pduType = charsArray[index]; index += 1; int oaLen = Convert.ToInt32(charsArray[index], 16); if (oaLen % 2 == 1) { oaLen = (oaLen + 1) / 2 + 1; } else { oaLen = oaLen / 2 + 1; } data.oa = charsArray[index] + string.Join("", charsArray, index + 1, oaLen); index += oaLen + 1; data.pid = charsArray[index]; index += 1; data.dcs = charsArray[index]; index += 1; data.scts = string.Join("", charsArray, index, 7); index += 7; data.udl = charsArray[index]; index += 1; int udLen = Convert.ToInt32(data.udl, 16); data.ud = string.Join("", charsArray, index, udLen); index += udLen; return(data); } catch (Exception ex) { return(data); } }
private void receiveSms(PDUData pduData) { log("RECV:[" + pduData.ToString() + "]"); log("PDUDATA:[" + pduData.getPUDType() + "],[" + pduData.getOA() + "],[" + pduData.getDcs() + "],[" + pduData.getMsg() + "],[" + pduData.getTimeStamp() + "]"); string saveRs = saveSms(pduData); log("入表:" + saveRs); form.receiveSms(phoneNum, pduData); }
public void receiveSms(string phoneNum, PDUData pduData) { DataGridViewRow d = new DataGridViewRow(); d.CreateCells(dataGridView1, phoneNum, pduData.getOA(), pduData.getTimeStamp(), pduData.getMsg()); dataGridView1.Rows.Insert(0,d); if (dataGridView1.Rows.Count - 1 > 5) { dataGridView1.Rows.RemoveAt(5); } }
public void receiveSms(string phoneNum, PDUData pduData) { DataGridViewRow d = new DataGridViewRow(); d.CreateCells(dataGridView1, phoneNum, pduData.getOA(), pduData.getTimeStamp(), pduData.getMsg()); dataGridView1.Rows.Insert(0, d); if (dataGridView1.Rows.Count - 1 > 5) { dataGridView1.Rows.RemoveAt(5); } }
public static PDUData parseSmsDeliverPUD(string pduStr) { PDUData data = new PDUData(); data.pduStr = pduStr; try { string[] charsArray = toCharsArray(pduStr); int index = 0; int scaLen = Convert.ToInt32(charsArray[index], 16); data.sca = charsArray[index] + string.Join("", charsArray, index + 1, scaLen); index += scaLen + 1; if (index > charsArray.Length) return data; data.pduType = charsArray[index]; index += 1; int oaLen = Convert.ToInt32(charsArray[index], 16); if (oaLen % 2 == 1) { oaLen = (oaLen + 1) / 2 + 1; } else { oaLen = oaLen / 2 + 1; } data.oa = charsArray[index] + string.Join("", charsArray, index + 1, oaLen); index += oaLen + 1; data.pid = charsArray[index]; index += 1; data.dcs = charsArray[index]; index += 1; data.scts = string.Join("", charsArray, index, 7); index += 7; data.udl = charsArray[index]; index += 1; int udLen = Convert.ToInt32(data.udl, 16); data.ud = string.Join("", charsArray, index, udLen); index += udLen; return data; } catch (Exception ex) { return data; } }
private string saveSms(PDUData pduData) { string sqlstr = "insert into mo_999 (dest,src,cmd,time) values (" + "'" + this.phoneNum + "'" + ",'" + pduData.getOA() + "'" + ",'" + pduData.getMsg() + "'" + ",now())"; Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaa" + sqlstr); MySQLConnection conn = getConn(); MySQLCommand comm = new MySQLCommand(sqlstr, conn); comm.ExecuteNonQuery(); return(sqlstr); }
public ArrayList getAllSms() { string p = "4"; if (this.getSmsMode().Equals("1")) { p = "\"ALL\""; } this.Write("AT+CMGL=" + p + endFlag); this.ReadTo("AT+CMGL=" + p + endFlag); this.ReadTo(endFlag); ArrayList smsArray = new ArrayList(); string line; while (true) { line = this.ReadTo(endFlag); if (line.StartsWith("OK")) { return(smsArray); } else if (line.StartsWith("ERROR")) { throw new Exception("获取所有短信失败"); } else if (line.StartsWith("+CMGL:")) { line = this.ReadTo(endFlag); Console.WriteLine(line); PDUData data = PDUData.parseSmsDeliverPUD(line); smsArray.Add(data); } } }
public void run(Object threadContext) { try { md.open(); md.openCmdEcho(); //AT+CPAS log("查询设备状态..."); if (md.getModenState() != 0) { log("设备忙,挂断"); md.hangsUp(); } log("空闲,重置..."); md.reset(); log("重置完毕,检查sim卡..."); md.checkSimCard(); log("sim卡正常,设置消息到达格式..."); md.setSmsReachInfoFormat("1,1,2"); log("设置消息到达格式完成,设置短信模式"); md.setSmsMode(0); log("设置短信为PDU模式完成。"); log("获取已有信息..."); getAllArrivedSms(); log("等待短信到达中..."); while (running) { try { String line = md.readLien(); log("RECV:" + line); if (line.StartsWith("+CMTI:")) { int smsId = int.Parse(line.Replace("+CMTI: \"SM\",", "")); log("收到短信[" + smsId + "],获取中..."); PDUData data = md.getSms(smsId); if (data != null) { receiveSms(data); } md.deleteSms(smsId); log("短信[" + smsId + "]已保存,删除..."); } Thread.Sleep(500); } catch (TimeoutException ex) { log("等待短信超时,获取已有信息..."); getAllArrivedSms(); } } log("正常停止!"); form.changeThreadState("正常停止!"); } catch (Exception ex) { log("端口" + md.PortName + "异常:" + ex.Message); form.changeThreadState("异常退出!!!"); } finally { if (md.IsOpen) { md.Close(); } log("端口" + md.PortName + "关闭,退出..."); } }
private string saveSms(PDUData pduData) { string sqlstr = "insert into mo_999 (dest,src,cmd,time) values (" + "'" + this.phoneNum + "'" + ",'" + pduData.getOA() + "'" + ",'" + pduData.getMsg() + "'" + ",now())"; Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaa"+sqlstr); MySQLConnection conn = getConn(); MySQLCommand comm = new MySQLCommand(sqlstr, conn); comm.ExecuteNonQuery(); return sqlstr; }
private void receiveSms(PDUData pduData) { log("RECV:[" + pduData.ToString() + "]"); log("PDUDATA:[" + pduData.getPUDType() + "],[" + pduData.getOA() + "],[" + pduData.getDcs()+ "],[" + pduData.getMsg() + "],[" + pduData.getTimeStamp() + "]"); string saveRs = saveSms(pduData); log("����" + saveRs); form.receiveSms(phoneNum, pduData); }