/// <summary> /// 静态构造函数 /// </summary> static ReadWriteIdHandle() { atSnRead = new ATReadCmd(ATReadCmd.ReadIdType.SnRead, "AT+CBSN\r\n", "+CBSN:"); atIccidRead = new ATReadCmd(ATReadCmd.ReadIdType.IccidRead, "AT+CCID\r\n", "+CCID:"); atImeiRead = new ATReadCmd(ATReadCmd.ReadIdType.ImeiRead, "AT+CGSN\r\n", "+CGSN:"); atEidRead = new ATReadCmd(ATReadCmd.ReadIdType.EidRead, "AT+CEID\r\n", "+CEID:"); atVersonRead = new ATReadCmd(ATReadCmd.ReadIdType.VersonRead, "AT+CGMR\r\n", VersonStart); atImeiWrite = new ATWriteCmd(ATWriteCmd.WriteIdType.ImeiWrite, "AT+EGMR=1,7,\"", "\"\r\n"); atSnWrite = new ATWriteCmd(ATWriteCmd.WriteIdType.SnWrite, "AT+EGMR=1,5,\"", "\"\r\n"); }
//<summary> //静态构造函数 //</summary> static ReadWriteHandle() { atReset = new ATReadCmd(ATReadCmd.ReadIdType.Reset, "Reset System\r\n", "Get RST command"); //atIccidRead = new ATReadCmd(ATReadCmd.ReadIdType.IccidRead, "AT+CCID\r\n", "+CCID:"); atGPIOTest = new ATReadCmd(ATReadCmd.ReadIdType.GPIOTest, "Output Result\r\n", "PIN"); //atEidRead = new ATReadCmd(ATReadCmd.ReadIdType.EidRead, "AT+CEID\r\n", "+CEID:"); //atVersonRead = new ATReadCmd(ATReadCmd.ReadIdType.VersonRead, "AT+CGMR\r\n", VersonStart); //atImeiWrite = new ATWriteCmd(ATWriteCmd.WriteIdType.ImeiWrite, "AT+EGMR=1,7,\"", "\"\r\n"); //atSnWrite = new ATWriteCmd(ATWriteCmd.WriteIdType.SnWrite, "AT+EGMR=1,5,\"", "\"\r\n"); }
/// <summary> /// 读取模块ID /// </summary> /// <param name="atReadCmd"></param> /// <returns></returns> public string ReadId(ATReadCmd.ReadIdType readIdType) { string id = null; ATReadCmd atReadCmd = null; switch (readIdType) { case ATReadCmd.ReadIdType.SnRead: atReadCmd = atSnRead; break; case ATReadCmd.ReadIdType.ImeiRead: atReadCmd = atImeiRead; break; case ATReadCmd.ReadIdType.EidRead: atReadCmd = atEidRead; break; case ATReadCmd.ReadIdType.IccidRead: atReadCmd = atIccidRead; break; case ATReadCmd.ReadIdType.VersonRead: atReadCmd = atVersonRead; break; default: throw new NullReferenceException("ATReadCmd.ReadIdType引用异常"); } //发命令获取数据 string readCmd = atReadCmd.Cmd; //读取指令 if (ATCmdCommunication(readCmd) != 0) { return(null); } //借助关键字符串提取出相应的ID string idKeySubstr = atReadCmd.IdKeySubstr.ToUpper(); //提取的关键字符串 if (readIdType == ATReadCmd.ReadIdType.VersonRead) { #region AT+CGMR\r\n后面的 //int positon; //if ((positon = recive.ToUpper().LastIndexOf(idKeySubstr)) >= 0) //{ // id = recive.Substring(positon + idKeySubstr.Length); // //id = recive.Substring(positon); // string[] sp = { "\r\n" }; // id = id.Split(sp, StringSplitOptions.RemoveEmptyEntries)[0]; //} #endregion #region 以CMIOT为关键字 string[] spit = { "\r\n" }; string[] line = recive.Split(spit, StringSplitOptions.RemoveEmptyEntries); int positon; for (int i = 0; i < line.Length; i++) { if ((positon = line[i].IndexOf(idKeySubstr)) >= 0) { id = line[i].Substring(positon); //id = System.Text.RegularExpressions.Regex.Replace(temp, @"[^0-9A-Z]", ""); } } #endregion } else { string[] spit = { "\r\n" }; string[] line = recive.Split(spit, StringSplitOptions.RemoveEmptyEntries); int pos; for (int i = 0; i < line.Length; i++) { if ((pos = line[i].IndexOf(idKeySubstr)) >= 0) { string temp = line[i].Substring(pos + idKeySubstr.Length); id = System.Text.RegularExpressions.Regex.Replace(temp, @"[^0-9A-Z]", ""); } } } return(id); }