四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接Word文档格式.docx
- 文档编号:21092395
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:18
- 大小:2.74MB
四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接Word文档格式.docx
《四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接Word文档格式.docx》由会员分享,可在线阅读,更多相关《四川大学现代技术实验报告移动终端开发 VC 编程实践串口连接Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
打开的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"
);
14400"
19200"
28800"
38400"
57600"
115200"
m_nbits.AddString("
5"
6"
7"
8"
m_pairty.AddString("
偶校验"
奇校验"
无"
m_stopbits.AddString("
1"
1.5"
2"
m_flowctrl.AddString("
Xon/Xoff"
硬件"
if(m_strPort.IsEmpty())m_strPort="
COM1"
;
if(m_strRate.IsEmpty())m_strRate="
if(m_strPairty.IsEmpty())m_strPairty="
if(m_strBits.IsEmpty())m_strBits="
if(m_strStopbits.IsEmpty())m_strStopbits="
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();
-1)m_brate.GetLBText(nSel,m_strRate);
nSel=m_pairty.GetCurSel();
-1)m_pairty.GetLBText(nSel,m_strPairty);
nSel=m_nbits.GetCurSel();
-1)m_nbits.GetLBText(nSel,m_strBits);
////
nSel=m_stopbits.GetCurSel();
-1)m_stopbits.GetLBText(nSel,m_strStopbits);
nSel=m_flowctrl.GetCurSel();
-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)
端口设置成功!
"
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():
OnCommConnect()
//TODO:
Addyourcommandhandlercodehere
intnRate,nParity,nByteSize,nStopBits;
sscanf(m_strRate,"
%d"
&
nRate);
if(m_strPairty=="
)nParity=0;
elseif(m_strPairty=="
)nParity=1;
)nParity=2;
elsenParity=0;
sscanf(m_strBits,"
nByteSize);
if(m_strStopbits=="
)nStopBits=0;
elseif(m_strStopbits=="
)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;
if(dlg.DoModal()==IDOK)
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()
if(!
gsmInit())
该端口上没有发现GSM模块!
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"
Sms.h"
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)