《移动通信实验手册3-串口通信VC编程.pdf》由会员分享,可在线阅读,更多相关《移动通信实验手册3-串口通信VC编程.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、移动终端开发 VC 编程实践 实验目标:1)熟悉 VC+6.0 编程开发环境;2)在 VC+6.0 开发环境下通过编程实验计算机和试验箱之间的串口通信。(对实验中出现的错误及解决错误的方法做好记录)1、双击 VC 图标打开 VC+6.0 也可以从开始菜单的程序打开:打开的 VC+6.0 程序界面如下:2、打开 file-new,出现的对话框选择 MFC AppWizardexe,在 Project name 文本框输入mygsm(请根据自己组的组号作相应的修改,如:mygsmA01,mygsmB01等),如下图所示:(注意:此实验文档后续部分都是以工程名 mygsm 为基础编写的,每一组的工程
2、名都不同,请根据自己组的组号作相应修改!)请 保 存在 自己的 U 盘3、单击 ok,在新的对话框中选择 Single document,单击 Next,如下图:4、一直选择默认设置到最后一步点击 Finish 5、在出现的窗口中选择 OK,新建工程如下:6、创建串口设置对话框,单击 resourcesview,右键单击 dialog,选择 insert dialog,如下图所示:7、创建如下的对话框(先创建如图 7-1 的对话框):(左列控件对应 Static Text,右列控件对应 Combo Box 类型)图 7-1 依次右键单击新创建的 Static Text 选择属性,设置 Text
3、 的显示内容如上图所示:图 7-2 同样,设置对话框中所有新建的 combo box 属性如下:8、设计好对话框后,将对话框的名字改为 IDD_SETSERIALPORTDLG,然后双击对话框,出现创建对话框类的窗口如下:9、点击 OK,输入对话框类的名字:10、点击 OK,在出现的 MFC ClassWizard 界面选择 Member Variables 标签页,点击 Add variable按键,增加如下变量(名字可以自己定):把所有的变量创建完!11、再在 MFC ClassWizard 对话框中选择 Message Maps 标签页,在 Messages 选项下选择 WM_INITD
4、IALOG,点击 Add Function 增加对话框初始化函数:点击 OK 后,在对话框的初始化函数中增加如下语句:BOOL CsetSerialPort:OnInitDialog()CDialog:OnInitDialog();/TODO:Add extra initialization here CString strComm;for(int i=0;i-1)m_portnum.GetLBText(nSel,m_strPort);nSel=m_brate.GetCurSel();if(nSel -1)m_brate.GetLBText(nSel,m_strRate);nSel=m_pai
5、rty.GetCurSel();if(nSel -1)m_pairty.GetLBText(nSel,m_strPairty);nSel=m_nbits.GetCurSel();if(nSel -1)m_nbits.GetLBText(nSel,m_strBits);/nSel=m_stopbits.GetCurSel();if(nSel -1)m_stopbits.GetLBText(nSel,m_strStopbits);nSel=m_flowctrl.GetCurSel();if(nSel -1)m_flowctrl.GetLBText(nSel,m_strFlow);if(m_strP
6、ort.IsEmpty()|m_strRate.IsEmpty()|m_strPairty.IsEmpty()|m_strBits.IsEmpty()|m_strStopbits.IsEmpty()|m_strFlow.IsEmpty()AfxMessageBox(请正确设置端口!);/return;CDialog:OnOK();13、接着创建菜单栏如下:设置菜单名依次为:ID_SETSERIALPORT、ID_COMM_CONNECT、ID_CHECK_GSM。14、选择串口参数设置,单击右键选择 ClassWizard 打开 MFC ClassWizard 窗口,创建消息映射函数 OnSe
7、tserialport():void CMygsmApp:OnSetserialport()CsetSerialPort dlg;dlg.m_strPort=m_strPort;dlg.m_strRate=m_strRate;dlg.m_strBits=m_strBits;dlg.m_strPairty=m_strPairty;dlg.m_strStopbits=m_strStopbits;dlg.m_strFlow=m_strFlow;if(dlg.DoModal()=IDOK)if(m_strPort!=dlg.m_strPort)AfxMessageBox(端口设置成功!);m_strP
8、ort=dlg.m_strPort;m_strRate=dlg.m_strRate;m_strBits=dlg.m_strBits;m_strPairty=dlg.m_strPairty;m_strStopbits=dlg.m_strStopbits;m_strFlow=dlg.m_strFlow;15、同理创建菜单响应函数 OnCommConnect()和:OnCheckGsm():void CMygsmApp:OnCommConnect()/TODO:Add your command handler code here int nRate,nParity,nByteSize,nStopBi
9、ts;sscanf(m_strRate,%d,&nRate);sscanf(m_strPairty,%d,&nParity);sscanf(m_strBits,%d,&nByteSize);sscanf(m_strStopbits,%d,&nStopBits);while(!:OpenComm(m_strPort,nRate,nParity,nByteSize,nStopBits)CString strError;strError.Format(无法打开端口%s!现在设置串口参数吗?,m_strPort);if(AfxMessageBox(strError,MB_YESNO)=IDNO)ret
10、urn;CsetSerialPort dlg;dlg.m_strPort=m_strPort;dlg.m_strRate=m_strRate;dlg.m_strBits=m_strBits;dlg.m_strPairty=m_strPairty;dlg.m_strStopbits=m_strStopbits;dlg.m_strFlow=m_strFlow;if(dlg.DoModal()=IDOK)m_strPort=dlg.m_strPort;m_strRate=dlg.m_strRate;m_strBits=dlg.m_strBits;m_strPairty=dlg.m_strPairty
11、;m_strStopbits=dlg.m_strStopbits;m_strFlow=dlg.m_strFlow;else return;CString str;str.Format(%s 已连接,%s-%s-%s-%s,m_strPort,m_strRate,m_strBits,m_strPairty,m_strStopbits);CMainFrame*pFrame=(CMainFrame*)AfxGetApp()-m_pMainWnd;CStatusBar*pStatus=&pFrame-m_wndStatusBar;pStatus-SetWindowText(str);void CMyg
12、smApp:OnCheckGsm()/TODO:Add your command handler code here if(!gsmInit()AfxMessageBox(该端口上没有发现 GSM 模块!);return;AfxMessageBox(GSM 模块成功响应!);在 mygsm.h 中增加变量的定义:在 MainFrm 头文件中将 m_wndStatusBar 修改为 public 变量:public:CStatusBar m_wndStatusBar;16、最后将参考工程“VC+手机短信收发例程”目录里的 Comm.h、Comm.cpp 和 Sms.h、Sms.cpp 四个文件拷
13、贝到当前工程文件夹下,然后依次点击 VC 菜单中的 ProjectAdd To ProjectFiles,在出现的对话框中选中以上四个文件将其加入到工程中。17、在 mygsm.cpp 文件中增加三个包含文件:#include Comm.h#include Sms.h#include setSerialPort.h 18、先编译程序,如果没有错误,则直接运行程序,如有错误请修正错误后再编译运行!编译 运行 19、连接实验箱,运行程序,在 菜单栏选择“串口设置”,依次点击运行“串口参数设置”,“连接串口”,“测试 GSM 模块”,如能正确检测 GSM 模块,会显示如下对话框:(注意:“连接串口”菜单只能运行一次,串口采用独占式打开,再次打开会报错!如果在超级终端中已经连接了串口,在程序中连接串口也会报错!)20、修改程序实现自动检测串口线是否拔出,如果串口线拔出,在状态栏显示“串口线已断开”提示。实验报告要求:1、不需要照抄实验步骤,只需要写出实验过程中出现的错误及解决的方法;2、需要分析程序中串口调用的过程以及各个参数的含义,如果程序中有错误,请改正。