控件名称 | 控件Name属性 | 说明 |
TextBox | targetNumber | 接收手机号码 |
TextBox | CenterNumber | 短信中心号 |
TextBox | smsState | 发送短信后,返回的信息。注意设置控件为多行 |
TextBox | smsContent | 短信内容,同样,注意设置为多行 |
ComboBox | ConnectPort | 连接手机的端口,例:COM1\COM2 |
ComboBox | ConnectBaudRate | 串口连接的波特率,在串口通信中很重要的 |
Button | btnSend | 发送按钮 |
Button | btnConnect | 连接按钮,主要用于程序的初始化 |
Button | btnExit | 退出按钮 |
using JustinIO; using SMS; using System.IO; using System.Text; |
/// <summary> /// 初始化串口 /// </summary> 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; } } |
/// <summary> /// 初始化代码,并获取手机相关信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConnect_Click(object sender, System.EventArgs e) { bool opened = InitCom(ConnectPort.SelectedItem.ToString(),Convert.ToInt32(ConnectBaudRate.SelectedItem.ToString()));//打开并初始化串口 bool Connected = false; if (opened) { ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r")); //获取手机品牌 string response = Encoding.ASCII.GetString(ss_port.Read(128)); if (response.Length > 0) { ConnectState.Text = response.Substring(10,7); Connected = true; } else { ConnectState.Text = "与手机连接不成功"; Connected = false; } ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//获取手机型号 response = Encoding.ASCII.GetString(ss_port.Read(128)); if(response.Length > 0) { ConnectState.Text =ConnectState.Text+ " " + response.Substring(10,5) + " 连接中......"; Connected = true; } else { ConnectState.Text = "与手机连接不成功"; Connected = false; } ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));//获取手机短信中心号 response = Encoding.ASCII.GetString(ss_port.Read(128)); if(response.Length > 0) { CenterNumber.Text = response.Substring(20,13); Connected = true; } else { Connected = false; } if (Connected == true) { btnConnect.Enabled = false; btnSend.Enabled = true; } else { btnConnect.Enabled = true; btnSend.Enabled = false; } } } |
/// <summary> /// 发送短信 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSend_Click(object sender, System.EventArgs e) { string decodedSMS = sms.smsDecodedsms(CenterNumber.Text,targetNumber.Text,smsContent.Text); byte[] buf =Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength)); ss_port.Write(buf); string response = Encoding.ASCII.GetString(ss_port.Read(128)); string SendState = ""; if( response.Length > 0 && response.EndsWith("> ")) { ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS))); SendState = "发送成功!"; } else { SendState = "发送失败"; } string Result = String.Format("{0},{1},{2},\n\r",targetNumber.Text,smsContent.Text,SendState); smsState.Text += Result; } |
/// <summary> /// 关闭串口,退出程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExit_Click(object sender, System.EventArgs e) { ss_port.Close(); Application.Exit(); } |