⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 usb-com for sms 自己开发的类 可以借鉴下
💻 CS
📖 第 1 页 / 共 3 页
字号:
			this.groupBox4.ResumeLayout(false);
			this.groupBox2.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}


		#region ShowLog

		private string GetNewLine()
		{
			string logStr="";

			logIndex++;
			if ( logIndex != 1)
				logStr += "\r\n";
			logStr += logIndex.ToString() + ". " + DateTime.Now.ToLongTimeString() + " ";

			return logStr;
		}



		private void ShowSendBuffer(string val)
		{
			ShowMe(val, txtSendBuffer);
		}
		private void ShowSendLog(string val)
		{
			ShowMe(val, txtSendLog);
		}
		private void ShowRecvBuffer(string val)
		{
			ShowMe(val, txtRecvBuffer);
		}
		private void ShowRecvLog(string val)
		{
			ShowMe(val, txtRecvLog);
		}
		delegate void StringParameterDelegate(string val1, TextBox txt1);
		private void ShowMe(string val, TextBox txt)
		{
			if (InvokeRequired)
			{
				// We're not in the UI thread, so we need to call BeginInvoke
				BeginInvoke(new StringParameterDelegate(ShowMe), new object[]{val, txt});
				return;
			}
			// Must be on the UI thread if we've got this far
			txt.Text += val;
			txt.SelectionStart = txt.Text.Length;
			txt.ScrollToCaret();

		}

		#endregion

		#region tools
		private bool GetRetryCount()
		{
			try
			{
				this.retryCount = Convert.ToInt32(txtRetryCount.Text.Trim());
				return true;
			}
			catch
			{
				lblMessage.Text = "retry count should be an integer";
				return false;
			}

		}

		public bool InitCom(string m_port, int m_baudrate)
		{
			ss_port.PortNum = m_port;
			ss_port.BaudRate = m_baudrate;
			ss_port.ByteSize = 8;
			ss_port.Parity = 0;
			ss_port.StopBits = 1;
			ss_port.ReadTimeout = 1000;
			try
			{
				if (ss_port.Opened)
				{
					ss_port.Close();
					ss_port.Open();
				}
				else
				{
					ss_port.Open();//打开串口
				}
				return true;
			}
			catch(Exception e) 
			{
				MessageBox.Show("错误:" + e.Message);
				return false;
			}
		}

		private int SetSMSdbStatus(SMSInfo oInfo)
		{
			int result = -1;
			string sql = "update SMS set retrycount =" + oInfo.RetryCount + ", priority=" + oInfo.Priority + ",status=" + oInfo.Status + ", handletime=getdate()";
			sql += " where sysno=" + oInfo.SysNo;
			try
			{
				DacHelper dh = new DacHelper(sql);
				result = dh.ExecuteNoQuery();
			}
			catch
			{
				result = -1;
			}
			return result;
		}
		private int WriteSMSToDb(SMSRecvInfo oInfo)
		{
			int result = -1;
			string sql = "insert into smsrecv(cellnumber,smscontent, sendtime) ";
			sql += "values(" + Util.ToSqlString(oInfo.CellNumber) + "," + Util.ToSqlString(oInfo.SMSContent) + "," + Util.ToSqlString(oInfo.SendTime.ToString(AppConst.DateFormatLong)) + ")";

			try
			{
				DacHelper dh = new DacHelper(sql);
				result = dh.ExecuteNoQuery();
			}
			catch
			{
				result = -1;
			}
			return result;
		}

		private SortedList GetSendSMSList()
		{
			string sql = "select top 50 * from sms where status=" + (int)SMSStatus.SendOrg + " order by priority desc, sysno desc";
			DacHelper dh = new DacHelper(sql);
			DataSet ds = dh.ExecuteDataSet("sendquene");
			if ( ds== null || ds.Tables[0].Rows.Count ==0 )
				return null;
			SortedList sl = new SortedList(10);
			foreach(DataRow dr in ds.Tables[0].Rows)
			{
				SMSInfo item = new SMSInfo();
				Map(item, dr);
				sl.Add(item.SysNo, item);
			}
			return sl;
		}
		private void Map(SMSInfo oParam, DataRow tempdr)
		{
			oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]);
			oParam.CellNumber = Util.TrimNull(tempdr["CellNumber"]);
			oParam.SMSContent = Util.TrimNull(tempdr["SMSContent"]);
			oParam.Priority = Util.TrimIntNull(tempdr["Priority"]);
			oParam.RetryCount = Util.TrimIntNull(tempdr["RetryCount"]);
			oParam.Status = Util.TrimIntNull(tempdr["Status"]);
		}

		private bool CheckCellNumber(string cell)
		{
			if ( cell == "1861")
				return true;
			if ( cell.Length != 11)
			{
				return false;
			}
			long number;
			try
			{
				number = Convert.ToInt64(cell);
				if ( number < 13000000000)
				{
					return false;
				}
			}
			catch
			{
				return false;
			}
			return true;
		}

		#endregion

		#region cell related
		private void StartConnect()
		{
			Thread t = new Thread(new ThreadStart(DoConnect));
			t.IsBackground = true;
			t.Start();
		}
		
		private void DoConnect()
		{
			string readBuffer="";

			if ( !GetRetryCount())
				return;

			btnConnect.Enabled = false;

			bool opened = InitCom(cboPort.SelectedItem.ToString(),Convert.ToInt32(cboBps.SelectedItem.ToString()));
			if (opened)
			{
				string validResponse;
				bool isSucc;

				#region 是否支持AT指令
				isSucc = false;
				ss_port.Write(Encoding.ASCII.GetBytes("AT\r"));

				newLine = GetNewLine();
				ShowSendLog(newLine+ "是否支持AT指令");
				ShowSendBuffer(newLine);
				readBuffer = "";
				for(int i=0; i<retryCount; i++)
				{
					Thread.Sleep(retryTimeOut);
					readBuffer += Encoding.ASCII.GetString(ss_port.Read(128));
					if ( readBuffer.IndexOf("OK") != -1 )
					{
						isSucc = true;
						break;
					}
					else
					{
						ShowSendLog(". ");
					}
				}
				ShowSendBuffer(readBuffer);
				if ( isSucc )
				{
					ShowSendLog("OK");
					
				}
				else
				{
					ShowSendLog("Error");
				}
				#endregion


				#region 获取手机品牌

				if ( isSucc )
				{
					isSucc = false;
					ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r")); //获取手机品牌
					newLine = GetNewLine();
					ShowSendLog(newLine + "获取手机品牌");
					ShowSendBuffer(newLine);
					readBuffer = "";
					for ( int i=0; i< retryCount; i++)
					{
						Thread.Sleep(retryTimeOut);
						readBuffer += Encoding.ASCII.GetString(ss_port.Read(128));
						validResponse = readBuffer.Replace("AT+CGMI","").Replace("\r","").Replace("\n","").Replace("OK","");

						if (validResponse.Length > 0)
						{
							ConnectState.Text = validResponse +"\n";// response.Substring(10,7);
							isSucc = true;
							break;
						}
						else
						{
							ShowSendLog(". ");
						}
					}
					ShowSendBuffer(readBuffer);
					if ( isSucc )
					{
						ShowSendLog("OK");
					}
					else
					{
						ShowSendLog("Error");
					}
				}
				#endregion

				#region 获取手机型号

				if ( isSucc )
				{
					isSucc = false;
					ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//获取手机型号
					newLine = GetNewLine();
					ShowSendLog(newLine+"获取手机型号");
					ShowSendBuffer(newLine);
					readBuffer = "";
					for ( int i=0; i< retryCount; i++)
					{
						Thread.Sleep(retryTimeOut);
						readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
						validResponse = readBuffer.Replace("AT+CGMM","").Replace("\r","").Replace("\n","").Replace("OK","");

						if (validResponse.Length > 0)
						{
							ConnectState.Text += validResponse +"连接中......";
							isSucc = true;
							break;
						}
						else
						{
							ShowSendLog(". ");
						}
					}
					ShowSendBuffer(readBuffer);
					if ( isSucc )
					{
						ShowSendLog("OK");
					}
					else
					{
						ShowSendLog("Error");
					}
				}
				#endregion

				#region 获取手机短信中心号
				if ( isSucc )
				{
					isSucc = false;
					ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));//获取手机短信中心号
					newLine = GetNewLine();
					ShowSendLog(newLine+"获取手机短信中心号");
					ShowSendBuffer(newLine);
					readBuffer = "";
					for ( int i=0; i< retryCount; i++)
					{
						Thread.Sleep(retryTimeOut);
						readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
			
						int start = readBuffer.IndexOf("86");
						if ( start != -1 )
						{
							lblCenterNo.Text = readBuffer.Substring(start,13);
							isSucc = true;
							break;
						}
						else
						{
							ShowSendLog(". ");
						}
					}
					ShowSendBuffer(readBuffer);
					if ( isSucc )
					{
						ShowSendLog("OK");
					}
					else
					{
						ShowSendLog("Error");
					}
				}
				#endregion

				#region 设置短消息信息格式

				if ( isSucc )
				{
					isSucc = false;
					ss_port.Write(Encoding.ASCII.GetBytes("AT+CMGF=0\r"));//获取手机短信中心号
					newLine = GetNewLine();
					ShowSendLog(newLine+"设置短消息信息格式");
					ShowSendBuffer(newLine);
					readBuffer = "";
					for ( int i=0; i< retryCount; i++)
					{
						Thread.Sleep(retryTimeOut);
						readBuffer = Encoding.ASCII.GetString(ss_port.Read(128));
			
						int start = readBuffer.IndexOf("86");
						if ( readBuffer.IndexOf("OK") !=-1 )
						{
							isSucc = true;
							break;
						}
						else
						{
							ShowSendLog(". ");
						}
					}
					ShowSendBuffer(readBuffer);
					if ( isSucc )
					{
						ShowSendLog("OK");
					}
					else
					{
						ShowSendLog("Error");
					}
				}
				#endregion

				if ( isSucc )
				{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -