VC6.0MFC串口通信编写全过程

上传人:小** 文档编号:41200030 上传时间:2021-11-19 格式:DOC 页数:17 大小:504.50KB
收藏 版权申诉 举报 下载
VC6.0MFC串口通信编写全过程_第1页
第1页 / 共17页
VC6.0MFC串口通信编写全过程_第2页
第2页 / 共17页
VC6.0MFC串口通信编写全过程_第3页
第3页 / 共17页
资源描述:

《VC6.0MFC串口通信编写全过程》由会员分享,可在线阅读,更多相关《VC6.0MFC串口通信编写全过程(17页珍藏版)》请在装配图网上搜索。

1、其于MFC的串口调试助手编辑过程一、新建打开VC6.0文件一 新建一匸程一 MFC AppWiaid(exe) 位置(选择保存 工程位置1工程名称(输入工程名XXXX) 确定 T选择基本对话框f 下一 步 一下一步 f 下一步一选择(CXXXXDlgl成 f 确定 一在生成的基 本对话框内将不需要按钮及提示框(自动生成的“确定”“取消”及提示框)删除或修 改使用,至此基本框架完成如下图:基本框'架此控件(标志) 是下面步 骤添加进 来的串丨I 控件二、往生成的基本框架中添加控件1、因为控件列表框内没有串II通信用到的通信控件,所以要先添加到控件列表框内再 将控件添加到基本框内使用,步骤

2、如下:菜单栏一匸程一 添加到工程一 Components and controls. RegisteredActiveX Controls 选择 "Microsoft Cominuiucations Control, version 6.0 ”一Insert 确定>OK 关闭此子窗口完成添加操作标志如上图所示。2、将刚才添加添加到控件列表框内的串I I控件添加到基本框架内点击控件列表框内的串II控件,此时光标变为“十”形,在基本框架内随意划取一矩 形区域,即可以添加串II控件,不需要修改此控件的人小及位置,因为程编译运行后 此控件是看不到的,步骤结果如下图:3、继续往基本框架内

3、添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控 件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗11及一个按纽控件如 下图所示:选择其中任 意一个作为 输入编辑框 及输出编辑这两个窗11需要修改人小及位置,因为程序运行后将会显示而串11通信控件则不显示, 上图是运行后的效果。4、对以上四个控件编程步骤如下:a、右击串丨1通信控件 一 建立类向导 一 lember vaiiables Control IDS中选 择 IDC_MSCOMM1 add variable. Member variable name 中输入控件变量名 m_ctrlComm (变量名可以随意选取,但程序

4、中应与所取变量名一致)f 0L确 定b、右击编辑框、属性.常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA (可以随意选取,但程序中应与所取ID号一致),再在此窗 II的样式中勾选"多行",同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动 (V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框 输入ED号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直 多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ED号,为 IDC_BUTTON_MANUALSEND,并将标题

5、中的“Buttonl”改为“发送”,功能是按一 次就把发送编辑框中的内容发送一次。C、为以上两个编辑框添加变量,与串门通信控件一样添加,为IDC_EDIT_RXDATA添 力口 CString 型变量 m_stRXD8ta ;为 IDC_EDIT_TXDATA 添加 CString 型变量 m_strTXDatao说明:m_stRXD8t8和m_stTXD8ta分别用来放入接收和发送的字符 数据。D、添加串I I爭件消息处理函数OnComm()打开ClassWizard>Message Maps,选择 IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm

6、,(好 记而己)OK。这个函数是用来处理串I I消息爭件的,如每当串丨I接收到数据,就会产生一个串II接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OiiComm()函数加入相应的处理代码就能实现自已想要的功能了。在函数中加入如下代码:提示1:此句以下 才是我们要添加的语句代码段1:void CSconmiTestDlg: :OnConunQ/ TODO: Add vour control notification handler code hereVARIANT vanancmp;/定义_个 VARIANT 类对彖COleSafeAiray safeairay_inp;

7、/定义一个 COleSafeAirav 对象LONG lenjc;BYTE rxdata2048;设置 BYTE 数组 AN 8mtteilhat is not signed.CStiiiig strtemp;if (nvctilConun.GetCoiiuiiEvent()=2)/$件值为2表示接收缓冲区内有数据/以下你可以根据自己的通信协议加入处理代码 variaiit_mp=m_ctrlCoiniii.GetIiiput();读 缓冲区 safeanay_mp=vaiiant_mp;/AARIANT 型变量转换为 ColeSafeAiiav 型变量 len=safeariay_inp.

8、GetOneDunS ize();for(k=0;k<len;k+)safearraymp.GetElement(&kj-xdata+k)换为 BYTE 型数组 提示2:此三句是 下面用于是否是十 六进制发送的,暂 时可以不用理会for(k=0;k<len;k+)/数组转换为 Cstring 型变量BYTE bt=*(char*)(ixdata+k);if(m_ctdH亡xSendGetCheck()如果是HEX显示则转为16进制/ strtemp.Foimat(H%02x役bt); /将16进制数送入临时变量strtemp存放 / elsestrtempFonnatC,%

9、c",bt);/将字符送入临时变量stnemp存放m_sti RXData+=strtemp;/加入接收编辑框对应字符串UpdateData(FALSE);/更新编辑框内容(主要是接收编辑框中的)到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串I I,但运行程序不 应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一 行的,运行试试。没错吧?那么做下一步:E、打开串丨1和设置串II参数 你可以在你需要的时候打开串II,例如在程序中做一个 开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的 CSCommlestDIg:OnInitDialo

10、g()打开串口,加入如下代码:代码段2:BOOL CSConunTestDlg: :OiiIiiitDialog()CDialog: :OiiIiutDialogQ;/Add HAbout.M menu item to system m亡mi./ LDM_ABOUTBOX must be in the system coimnand range.ASSERT(IDM_ABOUTBOX & OxFFFO) = EDM.ABOUTBOX); ASSERT(IDM_ABOUTBOX < OxFOOO);CMenu* pSysMenu = GetSysteinMenu(FALSE); i

11、f (pSysMenu != NULL)C String strAboutMenu; strAboutMenu.LoadStrmg(IDS_ABOUTBOX);if (! strAboutMenu .IsEmptyO)p SysMenu->AppendMenu (MF.SEPARAT OR);pSysMenu->AppendMenu(MF_STRING. IDM_ABOUTBOX, stiAboutMenu);提示3:此句以下丄' 是我们要添加的语 句提Z5 4:此5 句是我们下 面要用到的 暂时可以不 用理会/ Set the icon for tliis dialog

12、The framework does tliis automatically / when the applicatioiVs main window is not a dialog Setlcon(m_lilcon, TRUE);/ Set big iconSetlcon(m_lilcon5 FALSE); / Set small icon / TODO: Add extra initialization herem_ComboBox.SetCurSel(0)y/打开软件时串I 1选择框默认显示COM1 m_BaudRate_M.SetCurSel(O)y/打开软件时波特率选择框默认显示96

13、00 m_Date_Select_M.SetCuiSel(O);/打开软件时数据位选择框默认显示8 m_StopBit_M. SetCurSel(O)y/JT开软件时停止位选择框默认显示1 m_.PaiityCheck_M.SetCuiSel(O)/打开软件时奇偶校验选择框默认显示无校验N下面if语句用于打开默认串11严*/if(m_ctilCoiniii.GetPonOpen()m_ctilConmi.SetPoitOpen(FALSE);/关闭串 I Im_ctrlConiin.SetConmiPoil( 1);/打开软件时默认使用 COMI 串 I I iq! m_ctrlC onun.

14、GetPoitOpen()m_ctilConmi.SetPoitOpen(TRUE);/打开串 I IelseAfxMessageBoxC'caimot open serial port"); /*/m_ctilConun.SetSettmgs("9600.n,S, 1 ");/打开软件时端I丨设置默认为波特率9600,无校 验位,8位数据,1位停止位m_ctilConun.SetInputMode(l); /I:表示以二进制方式检取数据 m_ctilConun.SetRTlueshold( 1); 参数1表示每当串I I接收缓冲区中有多于或等于1个 字符

15、时将引发一个接收数据的OnComm事件m_ctilConun.SetlnputLen(O); /设置当前接收区数据长度为0m_cti lConun. Getlnput();/先预读缓冲区以清除残留数据return TRUE; / leturn TRUE unless you set the focus to a controlF、发送数据,先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开 ClassWizard->Message Maps,选择 IDC_BUTTON_MANUALSEND,双击 BN_CLICKED 添加OnButtonManualsend()函数,并在函

16、数中添加如下代码:代码段3:void CSCommTestDlg:OnButtonManualsend()/ TODO: Add your control notification handler code hereUpdateData(TRUE); 读取编辑框内容 m_ctrlComm.SetOutput(COIeVariant(m_strTXData); 发送数据此时运行程序,在发送编辑框中随意输入数,单击发送按钮,若出错则修改后再测试, 直到成功再进行以下操作。5、添加两个“组框”或“静态文本”控件,调整位置及大小,在标师处输入提示文字, 这两个控件不用编程,效果如下图:二 SComlT

17、 est二 SComlT est接收数据区;发送数括输入;发送6、添加5个“静态文本”控件并由属性修改其标题,均不用编程,效果如下图:7、添加5个“组框”控件,效果如下图:逐一对各个组框属性编辑如F:串口号:常规 ID: IDC_COMBO_CommSelect数据 输入列表框项目(N): C0M1、COM2、COM3、COM4、C0M5、C0M6、C0M7、 COM& C0M9 (注意每输入一个数据选项以Ctrl+Enter回车后再输入下一个数据选 项)样式将“分类勾选去掉”进入类向导添加变量,为IDC_COMBO_CommSelect添加一个value类int型变量 m_Index

18、,点击 0K 后,再添加一个 Control 类 CComboBox 型变量 m_ComboBox 点 击0K最后“确定”波特率:常规 ID: IDC_COMBO_BaudRate_Select数据 输入列表框项目(N): 9600、14400、19200、38400、56000、57600、115200、 128000、 256000样式将“分类勾选去掉”进入类向导添加变量,为IDC_COMBO_BaudRate_Select添加一个value类int型变量 m_ Baud Rate 点击 OK 后,再添加一个 Control 类 CComboBox 型变量 m_ BaudRate_M 点击

19、OK最后“确定”数据位:常规 ID: IDC_COMBO_Date_Select数据输入列表框项目(N): 8、7、6、5、4样式将“分类勾选去掉”进入类向导添加变量,为IDC_COMBO_Date_Select添加一个value类int型变量 m_Date_Select 点击 OK 后,再添加一个 Control 类 CComboBox 型变量 m_Date_Select _M点击OK最后“确定”停止位:常规 ID: IDC_COMBO_StopBit 数据 输入列表框项目(N): 1、2 样式将“分类勾选去掉”进入类向导添加变量,为IDC_COMBO_StopBit添加一个value类in

20、t型变量 m_StopBit 点击 0K 后,再添加一个 Control 类 CComboBox 型变量 m_StopBit_M 点击 0K最后“确定”奇偶校验位:常规 ID: IDC_COMBO_ParityCheck数据 输入列表框项目(N): N、0、E、样式将“分类勾选去掉”进入类向导添加变量,为IDC_COMBO_ParityCheck添加一个value类int型变量 m_ParityCheck点击 0K后,再添加一个Control类CComboBox型变量 m_ParityCheck_M 点击 0K 最后“确定”说明:以上数据配置添加的Control类CComboBox型变量可能用

21、不到,但value类必须为 int型8、为各个列表框添加处理函数:A、在建立类向导中 Message Maps , object IDs 中选中 IDC_COMBO_CommSelect 再 在Messages中选中CBN_SELCHANG双击后单击OK,再在Member funtions中双击刚才生 成的函数进入程序编辑页面,添加程序代码如下:代码段4:void CSConmiTestDlg:OnSelchangeCOMBOConmiSelect()/ TODO: Add vour control notification handler code here m_Index=(CComboB

22、ox*)GetDlgItem(IDC_COMBO_ConmiSelect)->GetCurSel();/ 当前选 中的行(CComboBox*)GetDlgItem(IDC_COMBO_ConunSelect)->SetCurSel(m_Iiidex);/ 设置当 前选中的行的内容为显示的内容if(m_ctrlConmLGetPoitOpen()/当要改变时则要先关闭串口才可以用按键进行打开,所P 先判断当前串口是否打开如果是打开的则先关闭提示5:下面 添加串I打 开或关闭按 钮后将用到 此将用到此 判断及以下 语句m_cti 1C onmi. SetPoilOpen(FALSE)

23、;/ 关闭串口SetDlgItemText(IDC_BUTTON 1, ”打开串口 “);/将打开或关才按钮改为”打开串口”显示状 态B、同理为IDC_COMBO_BaudRate_Select添加处理函数程序代码如下:代码段5:void CSConuiiTestDlg:OnSelchangeCOMBOBaudRateSelect() / TODO: Add vour control notification handler code hereJUpdateData(tnie); m_BaudRate=(CComboBox*)GetDlgItem(IDC_COMBO_BaudRate_Sele

24、ct)->GetCuiSel();/当前选中的行* * * /根据当前选中的值进行波特率设置/*/switch(m_BaudRate)case 1: m_ctrlConuii.SetSettmgs(n 14400,/); break;case 2: m_ctrlConuii.SetSettmgs(n 19200,/);break;case 3: m_ctrlCoiiuii.SetSettmgs(n38400/);break;case 4: m_ctrlCoiiuii.SetSettmgs(n56000/);break;case 5: m_ctrlCoiiuii.SetSettmgs(n5

25、7600/);break;case 6: m_ctrlConuii.SetSettmgs(n 115200,/); break;case 7: m_ctrlConuii.SetSettmgs(n 128000,/); break;case 8: m_ctrlConuii.SetSettmgs(n256000,n); break;default:m_ctflConun.SetSettings(H9600.n); break;yy#* * */UpdateData(false);C、同理为IDC_COMBO_Date_Select添加处理函数程序代码如2代码段6:void CSCommTestDl

26、g:OnSelchangeCOMBODateSelect()/ TODO: Add your control notification handler code here UpdateData(true);m_Date_Select=(CComboBox*)GetDlgItem(IDC_COMBO_Date_Select)->GetCurSel() ;/雪前垃中的行III* *系*系*:*半*:* 半 * 客 * 客 * 客 *switch(m_Date_Select)case 1: m_ctrlComm.SetSettings(111);break;case 2: m_ctrlComm

27、.SetSettings(,6/1); break;case 3: m_ctrlComm.SetSettings(111);break;case 4: m_ctrlComm.SetSettings(11 ,4/1); break;default: m_ctrlComm.SetSettings(M 8,M); break;f f# / *<> *<> *<> *<> *<> *<>*和和UpdateData(false);D. 同理为IDC_COMBO_StopBit添加处理函数程序代码如下:代码段6:void CSConu

28、nTestDlg:OnSelchangeCOMBOStopBit()/ TODO: Add vour control notification handler code hereJUpdateData(tme);m_StopBit=(CComboBox*)GetDlgItem(IDC_COMBO_StopBit)->GetCurSelO;/ 当 前选中 的行/*/*/switch(m_StopBit)case 1: m_ctrlConuii.SetSettnigs(n,2n); break;default :m_ctflConun.SetSettings('r,); break;

29、yy#*“UpdateData(false);E、同理为IDC_COMBO_ParityCheck添加处理函数程序代码如卜:代码段7:void CSConuiiTestDlg:OnSelchangeCOMBOPaiityCheck()/ TODO: Add vour control notification handler code hereUpdateData(tme);m_PaiityCheck=(CComboBox*)GetDlgItem(IDC_COMBO-PantyCheck)->GetCuiSel();/ 当岳选中的行/,/* */*/switch(m_PantyCheck)

30、case 1: m_ctHCommSetSetdngsCQJ);break;case 2: m_ctHCommSetSetdngsCQJ);break;defhul 匸 m_ctHCommSetSettmgsC、NJ);break;yy#*UpdateData(false);此时应将代码段2:提示4中所指的那5个语句前的“/”删除9、串口添加打开或关闭按钮以同样的方式添加按钮,并将标题修改为“关闭串口”字样,为此按钮添加处理函数程序代码如下:代码段&void CSConmiTestDlg:OiiButtonlStart。检查是否改变默认的串口值,没有改变m.Index的值是0的,否则则

31、不为0if(m_Index<0)串口的默认值没有改变switcli(m_ctrlConiiii.GetPortOpeiiO)/点击打开或关闭串口按键时,根据当前串口 是否打开进行相应操作case1:严 *关闭串口前先将自动发送功能关闭* */SetDlgItemText(IDC_BUTTON_AutoSend/ 自动发送");/更改按键指示 KillTmiei(l);严 */当前串口是打开的则进行关串口操作 m_ctrlConuii.SetPortOpen(FALSE);/ 关闭串口 SetDlgItemText(IDC_BUTTONl ,n 打开串口 ”);/更改按键指示 U

32、pdateData(FALSE);/ 更新按键状态 break;case 0当前串口是关闭的则进行开串口操作m_ctrlConun. SetConuiiPoi1( I );/0果要打开串口则应先选择哪个串口 m_ctrlConmi.SetPortOpen(TRUE); 打开串口 SetDlgItemText(IDC_BUTTONl 关闭串口 ”);/更改按键指示 UpdateData(FALSE);break;default: AfxMessageBox("camiot open or close serial poll");else/串口的默认值有改变 switch(m_

33、ctrlConun.GetPoilOpen()/点击打开或关闭串口按键时,根据当前串口是否 打开进行相应操作case 0当前串口是关闭的则进行开串口操作 m_ctrlConmi.SetConuiiPoi1(m_Iiidex+1);/ 女口 果要打开串口 则应先选择哪 个串口m_ctrlConmi.SetPortOpen(TRUE); 打开串口 SetDlgItemText(IDC_BUTTONl 关闭串口 ”);/更改按键指示UpdateData(FALSE);/ 更新按键状态 break;case /* 关闭串口前先将自动发送功能关闭* */SetDlgItemText(IDC_BUTTON

34、_AutoSend/ 自动发送");/更改按键指示 KillTmiei(l);*/当前串口是打开的则进行关串口操作ni_ctilCoiiuii.SetPoitOpen(FALSE);SetDlgItemText(IDC_BUTTONl,”打开串口 ”);UpdateData(FALSE);break;default: AfxMessageBox(Hcaimot open serial port");if(m_Iiidex<0) (CComboBox*)GetDlgItem(IDC_COMBO_ConmiSelect)->SetCurSel(0);/ 如果没有另外

35、进 行串口选择则显示COM1if(m_BaudRate<0)(CComboBox*)GetDlgItem(IDC_COMBO_BaudRate_Select)->SetCurSel(0);/ 如 果 没有另 外进行波特率选择则显示9600if(m_Date_Select<0) (CComboBox*)GetDlgItem(IDC_COMBO_Date_Select)->SetCurSel(0);/ 如果没有另外进 行数据位选择则显示8if(m_StopBit<0)(CComboBox*)GetDlgItem(IDC_COMBO_StopBit)->SetCu

36、rSel(0);/ 如果没有另外进行停 止位选择则显示1if(m_ParityCheck<0) (CComboBox*)GetDlgItem(IDC_COMBO_ParityCheck)->SetCuiSel(0);/ 如果没有另外进 行校验位选择则显示没有校验位N10、添加自动发送功能:A、添加一个“编辑框”控件,此控件用于获取自动发送的时间间隔的,修改其ID 为 IDC_EDIT_Timei,为其添加一个 value 类 UINT 型变量 m_TimeiB、添加一个“按钮”控件,修改其ID为IDC_BUTTON_AutoSend修改其标题为 “自动发送”C、添加一个“按钮”控件

37、,修改其ID为IDC_BUTTON_StopAutoSend修改其标题为“停止自动发送”D、为“自动发送”按钮添加BN_CLICKED处理函数,程序代码如下:代码段9:void CSCommTestDlg:OnBUTTONAutoSend()UpdateData(TRUE);if(m_Timer<=0)/M断是否设置自动发送时间间隔AfxMessageBox(* '请设置自动发送时间间隔”);else if(!m_ctrlCommGetPortOpen()判断是否打开串口 AfxMessageBox(n 请打开串口 ");elseSetDlgItemText(IDC_B

38、UTTON_AutoSeiid,” 自动发送“);/ 更改按键指示 SetTimer(l,m_Timer,NULL);E、为''停止自动发送”按钮添加BN_CLICKED处理函数,程序代码如下:代码段9:void CSCommTestDlg:OnBUTTONStopAutoSend()/ TODO: Add your control notification handler code here SetDlgItemText(IDC_BUTTON_AutoSend,n 自动发送”);更改按键指示 KillTimer(l);F、因为要设置自发送,所以要添加一个Windows定时函数

39、,步骤如下:进入类向导Message Maps中的Object IDs中选择CScommTestDlg再选择Messages中的 WM_TIMER,进入TIMER函数后,添加如下程序代码如下:代码段10:void CSCommTestDlg:OnTimer(UINT nIDEvent)/ TODO: Add your message handler code here and/or call defaultUpdateData(TRUE);if(m_ctrlHexSend.GetCheck()CByteArray hexdate;int len=String2Hex(m_strTXData,h

40、exdate); m_ctrlComm.SetOutput(COleVariant(hexdate);elsem_ctrlComm.SetOutput(COleVariant(m_strTXData);CDialog: :OnTimer(nIDEvent);11、十六进制数据发送及接收显示添加一个“复选框”控件,修改ID为IDC_CHECK_HexSend,标题为“HEX发送”,进 入类向导添加contiol类CButton型变量,变量名为m_ctrlHexSend,然后为为 SCommlestDIg类添加以卞两个PUBLIC成员函数,在 Class view 中右击 CCommTestDlg

41、选中Add Member Function.然后在函数类型中输入“mt”,在 函数描述中输入 “ Stnng2Hex(CStung str, CByteAiray &senddate) ” 然后确定。编 辑函数体如下:代码段11:int CSConmiTestDlg: Strmg2Hex(CStrmg sti, CByteAiray &senddate)int hexdate,lowhexdate;int hexdatelen=0;int len=sti. GetLength();senddate.SetSize(leii/2);foi(int i=0;i<len;)ch

42、ar istr,hstr=stri; if(hstr=' *)1卄;contmue;1卄;if(i>=len)break;lsti-stii;hexdate=ConveitHexCliai(listr);lowhexdate=ConveitHexChar(lstr);if(liexdate= 16)| |(lowhexdate= 16)break;elsehexda te=hexd a te * 16+lowhexdate;i卄;senddatehexdatelen=(char)hexdate;hexdatelen-H-;senddate.SetSize(hexdatelen);

43、leturn hexdatelen;再添加别一个CCommTestDlg添加两个成员函数,在函数类型中输入“chai”,在函数描述中输入uConveitHexCliai(chai ch)然后确定。编辑函数体如下:代码段12:char CSConmiTestDlg: :ConveitHexChar(char ch)if(ch>='0')&&(ch<=9)letuin ch-0x30;else if(ch>='A')&&(ch<=F)letuin ch-'A十 10;else if(cli>=&#

44、39;a,)&&(ch<=,f)letuin ch-'a'+lO;elseietuni (-1);再将 CSComniTestDlg:OnButtonM3nu3lsend()修改成以下形式:代码段13:void CSConuiiTestDlg:OiiButtoiiManualsend() / TODO: Add vour control notification handler code hereJif( m_c trlC onun. GetPoitOpen()/ 判断是否打开串口AfxMessageBox(" i# 打开串口 ”);elseUp

45、dateData(TRUE); if(m_ctrlHexSend. GetC heck()/ 判断是否是自动发送CByteAiiav hexdate;int len=Stnng2Hex(m_stfTXData,liexdate); m_ctilConmi.SetOutput(COleVanant(hexdate);else m_ctilConmi.SetOutput(COleVanant(m_stfTXData);在接收框中以十六进制显示将代码段1,提示2的三句程序代码前的“”去掉即可。至此,基本功能已完成,编译运行程序是否能实现各功能,如呆出错,则细仔改正,再通过添加"组 合框”控

46、件或“静态文本”可以添加相应提示,再由菜单栏中的布局内的各种功能选择可以实现将各 控件整齐排列效果如下:12、保存数据功能添加一个按钮控件,ID为IDC_BUTTON_SaveData,标题为:保存数据,添加两个“复选框” 控件,一个 ID 为 IDC_CHECK_HEXSave,标题为:HEX 保存,另一个 ID 为 IDC_CHECK_BCDSave, 标题为:BCD保存,选择HEX保存则保存的数据为十六进制数据,选择BCD保存则保存的数据为十 进制数据,但不可两都同时选择,再为两个复选框选添加两个control类CBiitton型变量,一个变 量名为:m_HEXSave,另一个为m.BC

47、DSave;为“保存数据”按钮添加一个BN_CLICKED 函数;另外再为为SCommTestDIg类添加以卞两个PUBLIC成员函数,此函数只要用于十六进制 与十进制数据之间的转换,函数类型为CSuing,函数描述为HEX_To_BCD(CStimg HexData), 函数体如下:代码段13:再为“保存数据”按钮添,的BN_CLICKED函数添加函数体,代码如下: 代码段14:13:清除数据:添加一个“清除数据”按钮控件,ID为LDC_BUTTON_CleanRXData,标题为:清 空数据区,添加一个BN.CLICKED函数,函数体代码如下:代码段14:void CSConunTestDlg:OiiLBUTTONCleaiiRXDataO/ TODO: Add vour control notification handler code herem_sti RXData .Empty();UpdateData(FALSE);至此其串口调试助手其本功能己全部实现,编译程序运行后效果如下:

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!