文档库 最新最全的文档下载
当前位置:文档库 › 移动终端开发VC编程实践

移动终端开发VC编程实践

移动终端开发VC编程实践
移动终端开发VC编程实践

移动终端开发VC编程实践

1、双击VC图标打开VC++6.0

也可以从开始菜单的程序打开:

打开的VC++6.0程序界面如下:

2、打开file->new,出现的对话框选择MFC AppWizard[exe],在Project name文本框输入

mygsm,如下图所示:

3、单击ok,在新的对话框中选择Single document,单击Next,如下图:

4、一直选择默认设置到最后一步点击Finish

5、在出现的窗口中选择OK,新建工程如下:

6、创建串口设置对话框,单击resourcesview,右键单击dialog,选择insert dialog,如下图

所示:

右键单击Static Text选择属性,设置Text的显示内容:

同样,设置combo box属性如下:

图7-2

图7-3

8、设计好对话框后,将对话框的名字改为IDD_SETSERIALPORTDLG,然后双击对话框,

出现创建对话框类的窗口如下:

9、点击OK,输入对话框类的名字:

10、点击OK,在出现的MFC ClassWizard界面选择Member Variables标签页,点击Add

variable…按键,增加如下变量(名字可以自己定):

把所有的变

量创建完!

11、再在MFC ClassWizard对话框中选择Message Maps标签页,在Messages选项下选

择WM_INITDIALOG,点击Add Function增加对话框初始化函数:

点击OK后,在对话框的初始化函数中增加如下语句:

BOOL CsetSerialPort::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

strComm;

CString

for(int i=0; i<20; i++)

{

+

1);

i

strComm.Format("COM%d",

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("无");

m_strPort="COM1"; if(m_strPort.IsEmpty())

m_strRate="9600"; if(m_strRate.IsEmpty())

m_strPairty="无";

if(m_strPairty.IsEmpty())

m_strBits="8";

if(m_strBits.IsEmpty())

if(m_strStopbits.IsEmpty()) m_strStopbits="1";

m_strFlow="无";

if(m_strFlow.IsEmpty())

m_strPort);

m_portnum.SelectString(-1,

m_strRate);

m_brate.SelectString(-1,

m_strPairty);

m_pairty.SelectString(-1,

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

// EXCEPTION: OCX Property Pages should return FALSE }

在头文件中增加下面变量的定义:

12、再次选择串口设置对话框,双击OK按键,创建OnOK函数如下:

void CsetSerialPort::OnOK()

{

UpdateData();

nSel;

int

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打开MFC ClassWizard窗口,创建

消息映射函数OnSetserialport():

void CMygsmApp::OnSetserialport()

{

dlg;

CsetSerialPort

dlg.m_strRate = m_strRate;

=

m_strBits;

dlg.m_strBits

m_strPairty;

=

dlg.m_strPairty

m_strStopbits;

dlg.m_strStopbits

=

=

m_strFlow;

dlg.m_strFlow

if(dlg.DoModal() = = IDOK)

{

dlg.m_strPort)

if(m_strPort

!=

{

AfxMessageBox("端口设置在下次启动程序时生效");

}

=

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

=

}

}

15、同理创建菜单响应函数OnCommConnect()和:OnCheckGsm():

void CMygsmApp::OnCommConnect()

{

// TODO: Add your command handler code here

int nRate, nParity, nByteSize,nStopBits;

sscanf(m_strRate, "%d", &nRate);

&nParity);

sscanf(m_strPairty,"%d",

&nByteSize);

sscanf(m_strBits,"%d",

sscanf(m_strStopbits,"%d", &nStopBits);

while (!::OpenComm(m_strPort, nRate,nParity,nByteSize,nStopBits))

{

strError;

CString

strError.Format("无法打开端口%s! 现在设置串口参数吗?", m_strPort);

if (AfxMessageBox(strError, MB_YESNO) == IDNO) return;

dlg;

CsetSerialPort

m_strPort;

=

dlg.m_strPort

dlg.m_strBits

m_strBits;

=

m_strPairty;

dlg.m_strPairty

=

m_strStopbits;

=

dlg.m_strStopbits

=

m_strFlow;

dlg.m_strFlow

if (dlg.DoModal() == IDOK)

{

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

}

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;

pStatus=&pFrame->m_wndStatusBar;

CStatusBar*

pStatus->SetWindowText(str);

}

void CMygsmApp::OnCheckGsm()

{

// TODO: Add your command handler code here

(!gsmInit())

if

{

AfxMessageBox("该端口上没有发现GSM模块!");

;

return

}

AfxMessageBox("GSM模块成功响应!");

}

在mygsm.h中增加变量的定义:

16、最后将参考工程“VC++手机短信收发”下的Comm.h、Comm.cpp和Sms.h、Sms.cpp

四个文件拷贝到当前工程文件夹下,然后依次点击VC菜单中的Project—>Add To Project —>Files,在出现的对话框中选中以上四个文件将其加入到工程中。

17、在mygsm.h头文件中增加三个包含文件:

#include "Comm.h"

#include "Sms.h"

#include "setSerialPort.h"

18、编译运行,查看程序运行结果,如有错误请修正错误后再编译运行!

相关文档