步骤六、添加串口初始化代码,如下:<?XML:NAMESPACE PREFIX = O />
将上述代码直接拷入你的程序中,并确保添加在Main主函数的后面,按F5,调试应该没什么问题,不过上面还没有实际任何看得见的功能,仅仅是打开了串口而以。
步骤七、打开串口后,我们就应该初始化程序,取得手机的名牌,型号,以及短信中心号,双击连接按钮,并把下面代码拷入程序中:
到这里,你可以按F5,编译调试,通过,在确保你的手机与电脑连接正常下,点击连接按钮看看,是不是像我的一样,手机型号及短信中心号者正常显示出来了。
<?XML:NAMESPACE PREFIX = V />
图四、连接后程序界面
步骤八、看到上在的结果,是不是感觉到离成功发送短信很近啦,看这么长的文章,费了大家不少时间,再不亮出发短信部份,对不起大家了。
双击发送按钮,将下面代码拷入程序中。
快按F5吧!神啊,快通过吧!不用求神了,已经通过了,现在你就可以发短信了,请确保手机可以正常连接电脑。按连接,然后填入你要的发送的目标手机号,并在内容中添入你要发送的内容,发送吧!成功了!成功了是这样子的!看你的跟我的一样吗?
图五、发送成功
还有一些事 不要忘了,记得添加退出代码。双击退出,添加下面代码:
到这里都告一个段落了,所有的功能都完成了!不过由于这仅仅是一个演示用例,还有很多没有考虑,像串口通信中的,在实际操作不可这样操作的,应该用多线程来处理,一个专门用来读串口,一个专门用来写串口。还有程序中很多防出错代码没有添加进去,希望有心有朋友添加,并公布出来,这也是我写这篇文章希望看到的结果。请勿将本程序直接用于实际中,真诚提醒你!
终于写完了,我也放松了许多,本来很早就应该完成了,因为一些个人原因,没有及时写完,向那些曾经问过我相关问题,没有及时回复的朋友,抱歉一声,希望你们继续支持我!
调试环境:
Windows 2000 Professional、Visual Studio.NET、西门子3508手机、西门子专用数据线。
常见问题:
第一, 手机品牌,因为不同产商的手机,对AT指令的支持不同,所以请选择适合你手机AT指令,像NOKIA的就只能用TEXT模式的AT指令。
第二, 数据线,问题出得最多的地方也就是数据,如果接上数据线后,你的手机显示为黑屏,建议你换数据线。
第三, 手机SIM卡上的短信中心号设置,请确保在你的手机上可以发送短信。
第四, 请你先用串口调试工具调试手机与电脑的连接,这样对你整个工作都是一个保证。
作者申明:
1、本文示例程序,可以任意拷贝、传播,但请保留作者的版权申明,以及第三方类库作者的版权申明。
3、本文为版权归本文所有,未作者及天极网的同意不得转载。
///
<
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; } } |
将上述代码直接拷入你的程序中,并确保添加在Main主函数的后面,按F5,调试应该没什么问题,不过上面还没有实际任何看得见的功能,仅仅是打开了串口而以。
步骤七、打开串口后,我们就应该初始化程序,取得手机的名牌,型号,以及短信中心号,双击连接按钮,并把下面代码拷入程序中:
///
<
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; } } } |
到这里,你可以按F5,编译调试,通过,在确保你的手机与电脑连接正常下,点击连接按钮看看,是不是像我的一样,手机型号及短信中心号者正常显示出来了。
<?XML:NAMESPACE PREFIX = V />
图四、连接后程序界面
步骤八、看到上在的结果,是不是感觉到离成功发送短信很近啦,看这么长的文章,费了大家不少时间,再不亮出发短信部份,对不起大家了。
双击发送按钮,将下面代码拷入程序中。
///
<
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}\x<?XML:NAMESPACE PREFIX = ST1 />01a",decodedSMS))); SendState = " 发送成功 !"; } else { SendState = " 发送失败 "; } string Result = String.Format("{0},{1},{2} , \n\r",targetNumber.Text,smsContent.Text,SendState); smsState.Text += Result; } |
快按F5吧!神啊,快通过吧!不用求神了,已经通过了,现在你就可以发短信了,请确保手机可以正常连接电脑。按连接,然后填入你要的发送的目标手机号,并在内容中添入你要发送的内容,发送吧!成功了!成功了是这样子的!看你的跟我的一样吗?
图五、发送成功
还有一些事 不要忘了,记得添加退出代码。双击退出,添加下面代码:
///
<
summary
>
/// 关闭串口,退出程序 /// < /summary > /// < param name="sender" >< /param > /// < param name="e" >< /param > private void btnExit_Click(object sender, System.EventArgs e) { ss_port.Close(); Application.Exit(); } |
到这里都告一个段落了,所有的功能都完成了!不过由于这仅仅是一个演示用例,还有很多没有考虑,像串口通信中的,在实际操作不可这样操作的,应该用多线程来处理,一个专门用来读串口,一个专门用来写串口。还有程序中很多防出错代码没有添加进去,希望有心有朋友添加,并公布出来,这也是我写这篇文章希望看到的结果。请勿将本程序直接用于实际中,真诚提醒你!
终于写完了,我也放松了许多,本来很早就应该完成了,因为一些个人原因,没有及时写完,向那些曾经问过我相关问题,没有及时回复的朋友,抱歉一声,希望你们继续支持我!
调试环境:
Windows 2000 Professional、Visual Studio.NET、西门子3508手机、西门子专用数据线。
常见问题:
第一, 手机品牌,因为不同产商的手机,对AT指令的支持不同,所以请选择适合你手机AT指令,像NOKIA的就只能用TEXT模式的AT指令。
第二, 数据线,问题出得最多的地方也就是数据,如果接上数据线后,你的手机显示为黑屏,建议你换数据线。
第三, 手机SIM卡上的短信中心号设置,请确保在你的手机上可以发送短信。
第四, 请你先用串口调试工具调试手机与电脑的连接,这样对你整个工作都是一个保证。
作者申明:
1、本文示例程序,可以任意拷贝、传播,但请保留作者的版权申明,以及第三方类库作者的版权申明。
3、本文为版权归本文所有,未作者及天极网的同意不得转载。
转载于:https://blog.51cto.com/cnming/223684