四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接.docx
- 文档编号:7956593
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:18
- 大小:2.74MB
四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接.docx
《四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接.docx》由会员分享,可在线阅读,更多相关《四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接.docx(18页珍藏版)》请在冰豆网上搜索。
四川大学现代技术实验报告移动终端开发VC编程实践串口连接
现代电子技术实验报告
课程名称:
现代电子技术实验
实验题目:
移动终端开发VC编程实践:
串口连接
学院:
电子信息学院
实验地点:
基础教学楼B520
实验三移动终端开发VC编程实践:
串口连接
一、实验目标
1)熟悉VC++6.0编程开发环境;
2)在VC++6.0开发环境下通过编程实现计算机和GSM模块之间的串口通信。
(对实验中出现的错误及解决错误的方法做好记录)
二、实验内容
将插有SIM卡的GSM收发实验板连接到电脑,通过VC++6.0配置的程序实现电脑与GSM实验板的连接通信。
三、实验器材
SIM300模块、USB转串口连接线、天线、SIM卡、电脑
四、实验步骤
1、双击VC图标打开VC++6.0也可以从开始菜单的程序打开:
打开的VC++6.0程序界面如下:
2、打开file->new,出现的对话框选择MFCAppWizard[exe],在Projectname文本框输入mygsmA201(请根据自己组的组号作相应的修改,不改工程名或与其他组雷同的实验成绩无效,如:
mygsmA101…,mygsmB203…等,其中大写A2代表星期一第一节实验课,B3代表周二下午第一节实验课,依次类推,01代表自己的组号。
如周三下午第二堂课05组Projectname应为mygsmC405),如下图所示:
(注意:
此实验文档后续部分都是以工程名mygsm####为基础编写的,每一组的工程
名都不同,请根据自己组的组号作相应修改,不可使用其他组的工程文件,将其他组的工程文件拿过来修改难度也很大,故本次实验一定要认真做,并且保存好模板!
)
3、单击ok,在新的对话框中选择Singledocument,单击Next,如下图:
请保存在自己的U盘根据自己组的实验时间修改工程名
4、一直选择默认设置到最后一步点击Finish(工程名不同此处显示的也有差异,在此无需
修改任何文件名)
5、在出现的窗口中选择OK,新建工程如下:
6、创建串口设置对话框,单击resourcesview,右键单击dialog,选择insertdialog,如下图
所示:
7、创建如下的对话框:
(左列控件对应StaticText,右列控件对应ComboBox类型)
如果绘制对话框中控件栏消失,请在菜单栏选择Tools->Customize,在出现的对话框
选Toolbars标签页,在列表中选中Controls,如下图所示:
依次右键单击新创建的StaticText选择属性,设置Text的显示内容如上图所示:
同样,,设置对话框中所有新建的combobox属性如下:
选中新创建的Dialog对话框,单击右键选属性,将对话框的ID定义为IDD_SETSERIALPORTDLG,如下图所示:
8、设计好对话框后双击对话框,出现创建对话框类的窗口如下:
9、点击OK,输入对话框类的名字:
10、点击OK,在出现的MFCClassWizard界面选择MemberVariables标签页,点击Add
variable…按键,增加如下变量(名字可以自己定):
11、再在MFCClassWizard对话框中选择MessageMaps标签页,在Messages选项下选择WM_INITDIALOG,点击AddFunction增加对话框初始化函数:
点击OK后,在对话框的初始化函数中增加如下语句:
BOOLCsetSerialPort:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
CStringstrComm;
for(inti=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("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_pairty.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_strPort.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.SelectString(-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);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
在头文件中增加下面变量的定义:
12、再次选择串口设置对话框,双击OK按键,创建OnOK函数如下:
voidCsetSerialPort:
:
OnOK()
{
UpdateData();
intnSel;
nSel=m_portnum.GetCurSel();
if(nSel>-1)m_portnum.GetLBText(nSel,m_strPort);
nSel=m_brate.GetCurSel();
if(nSel>-1)m_brate.GetLBText(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.GetCurSel();
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_SETSERIALPORT、ID_COMM_CONNECT、ID_CHECK_GSM。
14、选择串口参数设置,单击右键选择ClassWizard打开MFCClassWizard窗口,创建消息映射函数OnSetserialport():
(注意:
类名根据工程名不同而不同,请不要机械性复制)
voidCMygsmApp:
:
OnSetserialport()
{
CsetSerialPortdlg;
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_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;
}
}
15、同理创建菜单响应函数OnCommConnect()和:
OnCheckGsm():
voidCMygsmApp:
:
OnCommConnect()
{
//TODO:
Addyourcommandhandlercodehere
intnRate,nParity,nByteSize,nStopBits;
sscanf(m_strRate,"%d",&nRate);
if(m_strPairty=="无")nParity=0;
elseif(m_strPairty=="奇校验")nParity=1;
elseif(m_strPairty=="偶校验")nParity=2;
elsenParity=0;
sscanf(m_strBits,"%d",&nByteSize);
if(m_strStopbits=="1")nStopBits=0;
elseif(m_strStopbits=="1.5")nStopBits=1;
elsenStopBits=2;
while(!
:
:
OpenComm(m_strPort,nRate,nParity,nByteSize,nStopBits))
{
CStringstrError;
strError.Format("无法打开端口%s!
现在设置串口参数吗?
",m_strPort);
if(AfxMessageBox(strError,MB_YESNO)==IDNO)return;
CsetSerialPortdlg;
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;
m_strStopbits=dlg.m_strStopbits;
m_strFlow=dlg.m_strFlow;
}
else
{
return;
}
}
CStringstr;
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);
}
voidCMygsmApp:
:
OnCheckGsm()
{
//TODO:
Addyourcommandhandlercodehere
if(!
gsmInit())
{
AfxMessageBox("该端口上没有发现GSM模块!
");
return;
}
AfxMessageBox("GSM模块成功响应!
");
}
在mygsm.h中增加变量的定义:
在MainFrm头文件中将m_wndStatusBar修改为public变量:
public:
CStatusBarm_wndStatusBar;
16、最后将参考工程“VC++手机短信收发例程”目录里的Comm.h、Comm.cpp和Sms.h、、Sms.cpp四个文件拷贝到当前工程文件夹下,然后依次点击VC菜单中的Project—>AddToProject—>Files,在出现的对话框中选中以上四个文件将其加入到工程中。
17、在mygsm.cpp文件中增加三个包含文件:
#include"Comm.h"
#include"Sms.h"
#include"setSerialPort.h"
如下图所示:
18、先编译程序,如果没有错误,则直接运行程序,如有错误请修正错误后再编译运行!
19、连接实验箱,运行程序,在菜单栏选择“串口设置”,依次点击运行“串口参数设
置”,“连接串口”,“测试GSM模块”,如能正确检测GSM模块,会显示如下对话框:
五、实验结果
1、连接实验箱,运行程序,在菜单栏选择“串口设置”,依次点击运行“串口参数设
置”,“连接串口”,“测试GSM模块”。
2、然后检测SIM卡
刚刚开始可能检测不到卡。
过一段时间再调试。
3.测试信号强度
六、实验心得
首先,实验前我们已经知道这次实验的复杂性,实验前我们已经在自己电脑上提前用VC++6.0进行了实验步骤的练习,因为实验中如果出现一点失误,就可能使整个实验推到重来。
实验中我们也是小心翼翼,每一个步骤在配置时都检查了几次,所以整个实验过程还算比较顺利。
配置完整个实验后,我们开始一个接一个地完成实验要求,设置串口参数、连接串口、测试GSM模块、检测SIM卡,基本都满足要求。
唯一不足的是检测信号强度的时候出现了乱码。
我们和助教老师反复讨论,决定课后查阅相关资料,再来讨论。
总之,通过这次我们自己动手使用VC+6.0制作一个超级终端,我们学习到了很多VC++6.0的使用技巧,而且亲自动手让电脑和GSM模块实验板进行串口的连接,让我们了解了硬件开发的快乐和不易。
这次实验我们小组遇到了很多困难,但是经过大家的讨论与合作,很好的完成了实验,,使我们提高了团队协作能力,,也让我们对我们专业有了更强烈的学习兴趣。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接 四川大学 现代 技术 实验 报告 移动 终端 开发 编程 实践 串口 连接
![提示](https://static.bdocx.com/images/bang_tan.gif)