四川大学现代技术实验报告(移动终端开发 VC 编程实践:串口连接)_第1页
四川大学现代技术实验报告(移动终端开发 VC 编程实践:串口连接)_第2页
四川大学现代技术实验报告(移动终端开发 VC 编程实践:串口连接)_第3页
四川大学现代技术实验报告(移动终端开发 VC 编程实践:串口连接)_第4页
四川大学现代技术实验报告(移动终端开发 VC 编程实践:串口连接)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现代电子技术实验报告课程名称: 现代电子技术实验 实验题目: 移动终端开发 VC 编程实践:串口连接 学 院: 电子信息学院 实验地点: 基础教学楼B520 实验三 移动终端开发 VC 编程实践:串口连接一、实验目标1)熟悉 VC+6.0 编程开发环境; 2)在 VC+6.0 开发环境下通过编程实现计算机和 GSM 模块之间的串口通信。(对实验中出现的错误及解决错误的方法做好记录)二、实验内容将插有SIM卡的GSM收发实验板连接到电脑,通过VC+6.0配置的程序实现电脑与GSM实验板的连接通信。三、实验器材SIM300模块、USB转串口连接线、天线、SIM卡、电脑四、实验步骤1、 双击 VC

2、图标打开 VC+6.0 也可以从开始菜单的程序打开:打开的 VC+6.0 程序界面如下:2、 打开 file->new,出现的对话框选择 MFC AppWizardexe,在 Project name 文本框输入mygsmA201(请根据自己组的组号作相应的修改,不改工程名或与其他组雷同的实验成绩无效, 如: mygsmA101, mygsmB203等,其中大写 A2 代表星期一第一节实验课,B3 代表周二下午第一节实验课,依次类推, 01 代表自己的组号。如周三下午第二堂课05 组 Project name 应为 mygsmC405),如下图所示:(注意:此实验文档后续部分都是以工程名

3、 mygsm# 为基础编写的,每一组的工程名都不同,请根据自己组的组号作相应修改,不可使用其他组的工程文件,将其他组的工程文件拿过来修改难度也很大,故本次实验一定要认真做,并且保存好模板!)3、 单击 ok,在新的对话框中选择 Single document,单击 Next,如下图:请 保 存 在 自己的 U 盘根据自己组的实验时间修改工程名4、 一直选择默认设置到最后一步点击 Finish(工程名不同此处显示的也有差异,在此无需修改任何文件名)5、 在出现的窗口中选择 OK,新建工程如下:6、 创建串口设置对话框,单击 resourcesview,右键单击 dialog,选择 insert

4、dialog,如下图所示:7、 创建如下的对话框:(左列控件对应 Static Text,右列控件对应 Combo Box 类型)如果绘制对话框中控件栏消失,请在菜单栏选择 Tools->Customize,在出现的对话框选 Toolbars 标签页,在列表中选中 Controls,如下图所示:依次右键单击新创建的 Static Text 选择属性,设置 Text 的显示内容如上图所示:同样,设置对话框中所有新建的 combo box 属性如下:选中新创建的 Dialog对话框,单击右键选属性,将对话框的ID定义为IDD_SETSERIALPORTDLG,如下图所示:8、 设计好对话框后

5、双击对话框,出现创建对话框类的窗口如下:9、 点击 OK,输入对话框类的名字:10、 点击 OK,在出现的 MFC ClassWizard 界面选择 Member Variables 标签页,点击 Addvariable按键,增加如下变量(名字可以自己定):11、 再在 MFC ClassWizard 对话框中选择 Message Maps 标签页,在 Messages 选项下选择 WM_INITDIALOG,点击 Add Function 增加对话框初始化函数:点击 OK 后,在对话框的初始化函数中增加如下语句:BOOL CsetSerialPort:OnInitDialog() CDial

6、og:OnInitDialog();/ TODO: Add extra initialization hereCString strComm;for(int i=0; i<20; i+) strComm.Format("COM%d", i + 1); m_portnum.AddString(strComm);m_brate.AddString("9600");m_brate.AddString("14400");m_brate.AddString("19200");m_brate.AddString(&quo

7、t;28800");m_brate.AddString("38400");m_brate.AddString("57600");m_brate.AddString("115200");m_nbits.AddString("5");m_nbits.AddString("6");m_nbits.AddString("7");m_nbits.AddString("8");m_pairty.AddString("偶校验");m_pai

8、rty.AddString("奇校验");m_pairty.AddString("无");m_stopbits.AddString("1");m_stopbits.AddString("1.5");m_stopbits.AddString("2");m_flowctrl.AddString("Xon/Xoff");m_flowctrl.AddString("硬件");m_flowctrl.AddString("无");if(m_strP

9、ort.IsEmpty() m_strPort="COM1"if(m_strRate.IsEmpty() m_strRate="9600"if(m_strPairty.IsEmpty() m_strPairty="无"if(m_strBits.IsEmpty() m_strBits="8"if(m_strStopbits.IsEmpty() m_strStopbits="1"if(m_strFlow.IsEmpty() m_strFlow="无"m_portnum.Selec

10、tString(-1, m_strPort);m_brate.SelectString(-1, m_strRate);m_pairty.SelectString(-1, m_strPairty);m_nbits.SelectString(-1, m_strBits);m_stopbits.SelectString(-1, m_strStopbits);m_flowctrl.SelectString(-1, m_strFlow);UpdateData(false);return TRUE; / return TRUE unless you set the focus to a control/

11、EXCEPTION: OCX Property Pages should return FALSE在头文件中增加下面变量的定义:12、 再次选择串口设置对话框,双击 OK 按键,创建 OnOK 函数如下:void CsetSerialPort:OnOK() UpdateData(); int nSel; nSel = m_portnum.GetCurSel(); if(nSel > -1) m_portnum.GetLBText(nSel, m_strPort); nSel = m_brate.GetCurSel(); if(nSel > -1) m_brate.GetLBText

12、(nSel, m_strRate); nSel = m_pairty.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.GetCu

13、rSel(); if(nSel > -1) m_flowctrl.GetLBText(nSel, m_strFlow); if(m_strPort.IsEmpty() | m_strRate.IsEmpty() | m_strPairty.IsEmpty() | m_strBits.IsEmpty()| m_strStopbits.IsEmpty() | m_strFlow.IsEmpty() AfxMessageBox("请正确设置端口 !"); /return; CDialog:OnOK();13、 接着创建菜单栏如下:设置菜单名依次为: ID_SETSERIAL

14、PORT、 ID_COMM_CONNECT、 ID_CHECK_GSM。14、 选择串口参数设置,单击右键选择 ClassWizard 打开 MFC ClassWizard 窗口,创建消息映射函数 OnSetserialport():(注意: 类名根据工程名不同而不同,请不要机械性复制)void CMygsmApp:OnSetserialport() CsetSerialPort dlg; dlg.m_strPort = m_strPort; dlg.m_strRate = m_strRate; dlg.m_strBits = m_strBits; dlg.m_strPairty = m_st

15、rPairty; dlg.m_strStopbits = m_strStopbits; dlg.m_strFlow = m_strFlow; if(dlg.DoModal() = = IDOK) if(m_strPort != dlg.m_strPort) AfxMessageBox("端口设置成功! "); m_strPort = dlg.m_strPort; m_strRate = dlg.m_strRate; m_strBits = dlg.m_strBits; m_strPairty = dlg.m_strPairty; m_strStopbits = dlg.m_

16、strStopbits; m_strFlow = dlg.m_strFlow; 15、 同理创建菜单响应函数 OnCommConnect()和:OnCheckGsm():void CMygsmApp:OnCommConnect() / TODO: Add your command handler code here int nRate, nParity, nByteSize,nStopBits; sscanf(m_strRate, "%d", &nRate); if(m_strPairty="无")nParity=0; else if(m_str

17、Pairty="奇校验")nParity=1; else if(m_strPairty="偶校验")nParity=2; else nParity=0; sscanf(m_strBits,"%d", &nByteSize); if(m_strStopbits="1")nStopBits=0; else if (m_strStopbits="1.5")nStopBits=1; else nStopBits=2; while (!:OpenComm(m_strPort, nRate,nPar

18、ity,nByteSize,nStopBits) CString strError; strError.Format("无法打开端口 %s! 现在设置串口参数吗?", m_strPort); if (AfxMessageBox(strError, MB_YESNO) = IDNO) return; CsetSerialPort dlg; dlg.m_strPort = m_strPort; dlg.m_strRate = m_strRate; dlg.m_strBits = m_strBits; dlg.m_strPairty = m_strPairty; dlg.m_st

19、rStopbits = 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; m_strStopbits = dlg.m_strStopbits; m_strFlow = dlg.m_strFlow; else return ; CString str; str.Format("%s

20、 已连接 , %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 CMygsmApp:OnCheckGsm() / TODO: Add your command handler code her

21、e 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 四个文件拷贝到当前工程文件夹下,然后依次点击 VC 菜单中的 Project>Add To Project>Files,在出现的对话框中选中以上四个文件将其加入到工程中。17、 在 mygsm.cpp 文件中增加三个包含文件:#include "Comm.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论