串口调试助手VC++6.0程序
- 格式:doc
- 大小:103.50 KB
- 文档页数:9
vc6.0安装教程与调试技巧vc6.0的安装过程1.首先解压安装文件的压缩包2.然后再选择安装的版本,VC6CN 表示的是中文版,VC6EN表示英文版。
3.打开VC6CN文件夹,其中有如下图标,鼠标双击。
4.如下图所示就是我们安装的第一步,单击下一步。
5.选择“接受协议”后单击下一步。
6.本软件属于破解版,故无需输入产品ID号码,直接单击下一步。
7.选择“安装visual c++6.0中文企业版(I)”,这就是我们要安装的程序,单击下一步。
8.单击下一步。
9.如下界面,单击“继续”,开始安装软件。
10.点击“确定”。
11.选择“是”,继续安装。
12.选择“typical”继续安装13.选择“ok”。
14.选择“确定”15.选择“确定”16.取消“安装MSDN”前面的勾号,选择“退出”。
17.选择“是”,取消MSDN的安装。
18.程序安装完毕,再电脑的“开始菜单”中,选择“所有程序”,在“Microsoft Visual C++ 6.0”目录中选择“Microsoft Visual C++6.0”就可以运行程序了。
也可以将这个图标发送到桌面快捷方式,这样就可以直接在桌面上运行程序。
调试技巧调试程序可以帮助的了解程序是怎样运行的。
1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release 状态。
“C/C++”标签页中的Category选General,Optimizations 选Disable(Debug),Debug info选Program Database。
在“Link”标签页中选中Generate debug info复选框。
注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。
串口调试助手VC60程序目次:1.建立项目那可能是你在安装VC6时没有把Active某一项选上,重新安装VC6,选上Active某就可以了),//{{AF某_INCLUDES()#include\(这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_R某DATA,另一个用于输入发送数据,ID为IDC_EDIT_T某DATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。
别忘记了将接收编辑框的Propertie->Style中把Miltiline和VerticalScroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。
休息一会吧?我们天天与电脑打交道,要注意保重,我现在在单杠上做引体向上可以来40次,可我都32了,佩服吗?。
好了,再接着来,下面是关键了:{//TODO:AddyourcontrolnotificationhandlercodehereVARIANTvariant_inp;COleSafeArrayafearray_inp;LONGlen,k;BYTEr某data[2048];//设置BYTE数组An8-bitintegerthatinotigned.CStringtrtemp;afearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray 型变量len=afearray_inp.GetOneDimSize();//得到有效数据长度for(k=0;kafearray_inp.GetElement(&k,r某data+k);//转换为BYTE型数组for(k=0;kBYTEbt=某(char某)(r某data+k);//字符型trtemp.Format(\将字符送入临时变量trtemp存放m_trR某Data+=trtemp;//加入接收编辑框对应字符串}}UpdateData(FALSE);//更新编辑框内容}到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口,但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一行的,运行试试。
VC(MFC)编写串口调试助手1.序确定基本功能:1.自动寻找串口,并自动添加到下拉框中共选择;2.有波特率、数据位、停止位、校验位的选择设置;3.串口打开控制按钮;4.发送、清除按钮;5.接收是自动实现的;6.有定时自动发送功能;7.有传送文件功能;8.有状态栏显示,指示串口状态,设置参数和发送接收显示。
下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。
开发平台Visual C++6.0英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win7 64位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。
2.创建MFC项目File -> New -> Projects选择MFC AppWizard(exe),项目名称commassist选择OK选中Dialog based,点击Next> 。
默认选项,点击Next> ,继续默认选项,点击Next> ,如果选中As a statically linked library,生产的EXE可直接在没装VC的机器上运行。
可以在项目中进行更改。
选择第二个CCommassistDlg,点击Finish点击OK。
项目创建完毕,进入项目。
删除界面上确定和取消按钮以及静态文字。
3.创建界面保存后便可以开始创建界面了。
参考界面仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。
4.图标修改在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。
下面将帮助页面图标也改为自绘图标。
在打开按钮旁边加入自绘的打开和关闭图标:先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。
如下图5.基本设置下面对各个按钮及编辑框设置进行描述右键串口对应的Combo Box,ID设置为IDC_COMLIST,Type设置为Drop List,Sort不选择(我系统是WIN7 64位,不选中反而自动排序,至于XP得试试看了,以下的选择相同)。
其于MFC 的串口调试助手编辑过程一、新建打开VC6.0 文件 新建 工程 MFC AppWiard(exe)位置(选择保存工程位置) 工程名称(输入工程名XXXX )确定 选择基本对话框 下一步 下一步 下一步 选择(CXXXXDlg ) 完成 确定 在生成的基本对话框内将不需要按钮及提示框(自动生成的“确定”“取消” 及提示框)删除或修改使用,至此基本框架完成如下图:二、往生成的基本框架中添加控件1、因为控件列表框内没有串口通信用到的通信控件,所以要先添加到控件列表框内再将控件添加到基本框内使用,步骤如下:菜单栏 工程 添加到工程 Components and controls … Registered ActiveX Controls 选择“Microsoft Communications Control, version 6.0” Insert 确定 OK 关闭此子窗口完成添加操作标志如上图所示。
2、将刚才添加添加到控件列表框内的串口控件添加到基本框架内 点击控件列表框内的串口控件,此时光标变为“十”形,在基本框架内随意划取一矩形区域,即可以添加串口控件,不需要修改此控件的大小及位置,因为程编译运行后此控件是看不到的,步骤结果如下图:3、继续往基本框架内添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗口及一个按纽控件如下图所示:这两个窗口需要修改大小及位置,因为程序运行后将会显示而串口通信控件则不显示,上图是运行后的效果。
4、对以上四个控件编程步骤如下:a 、右击串口通信控件 建立类向导Member variables Control IDS 中选择IDC_MSCOMM1 add variable … Member variable name 中输入控件变量名m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致) OK 确定b、右击编辑框、属性、常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID 号为IDC_EDIT_RXDATA(可以随意选取,但程序中应与所取ID号一致),再在此窗口的样式中勾选”多行”,同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动(V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框输入ID号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,同样也选上用于垂直多行显示,发送框可以不用垂直多行显示;再为按钮控件添加ID号,为IDC_BUTTON_MANUALSEND,并将标题中的“Button1”改为“发送”,功能是按一次就把发送编辑框中的内容发送一次。
串口调试助手源程序及编程详细过程作者:龚建伟 2001.6.20可以任意转载,但必须注明作者和说明来自,不得作为商用目次:1.建立项目2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。
(也许本文过于详细,高手就不用看)开始吧:1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用ClassWizard定义CMSComm类控制对象打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。
别忘记了将接收编辑框的Properties->Styles中把Miltiline和Vertical Scroll 属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。
再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_EDIT_RXDATA添加CString变量m_strRXData,为IDC_EDIT_TXDATA添加CString变量m_strTXData。
说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。
休息一会吧?我们天天与电脑打交道,要注意保重,我现在在单杠上做引体向上可以来40次,可我都32了,佩服吗?。
好了,再接着来,下面是关键了:5.添加串口事件消息处理函数OnComm()打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。
这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。
请你在函数中加入如下代码:void CSCommTestDlg::OnComm(){// TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.CString strtemp;if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符{ ////////以下你可以根据自己的通信协议加入处理代码variant_inp=m_ctrlComm.GetInput(); //读缓冲区safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize(); //得到有效数据长度for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组for(k=0;k<len;k++) //将数组转换为Cstring型变量{BYTE bt=*(char*)(rxdata+k); //字符型strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放m_strRXData+=strtemp; //加入接收编辑框对应字符串}}UpdateData(FALSE); //更新编辑框内容}到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口,但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一行的,运行试试。
没错吧?那么做下一步:6.打开串口和设置串口参数你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。
现在我们在主对话框的CSCommTestDlg::OnInitDialog()打开串口,加入如下代码:// TODO: Add extra initialization hereif(m_ctrlComm.GetPortOpen())m_ctrlComm.SetPortOpen(FALSE);m_ctrlComm.SetCommPort(1); //选择com1if( !m_ctrlComm.GetPortOpen())m_ctrlComm.SetPortOpen(TRUE);//打开串口elseAfxMessageBox("cannot open serial port");m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位m_ctrlComm.SetInputModel(1); //1:表示以二进制方式检取数据m_ctrlComm.SetRThreshold(1);//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据现在你可以试试程序了,将串口线接好后(不会接?去看看我写的串口接线基本方法),打开串口调试助手,并将串口设在com2,选上自动发送,也可以等会手动发送。
再执行你编写的程序,接收框里应该有数据显示了。
7.发送数据先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_BUTTON_MANUALSEND,双击BN_CLICKED添加OnButtonManualsend()函数,并在函数中添加如下代码:void CSCommTestDlg::OnButtonManualsend(){// TODO: Add your control notification handler code hereUpdateData(TRUE); //读取编辑框内容m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送数据}运行程序,在发送编辑框中随意输入点什么,单击发送按钮,啊!看看,在另一端的串口调试助手(或别的调试工具)接收框里出现了什么。
如果你真是初次涉猎串口编程,又一次成功,那该说声谢谢我了,因为我第一次做串口程序时可费劲了,那时网上的资料也不好找。
开开玩笑,谢谢你的支持,有什么好东西别忘了给我寄一份。
最后说明一下,由于用到VC控件,在没有安装VC的计算机上运行时要从VC中把mscomm32.ocx、msvcrt.dll、mfc42.dll 拷到Windows目录下的System子目录中(win2000为System32)并再进行注册设置,请参考如何手工注册MSComm控件。
龚建伟 2001.6.20什么是VARIANT数据类型?如何使用VARIANT数据类型?怎么以十六进制或二进制发送和接收?如果还想再深入了解,请看:串口调试助手源程序及编程详细过程(二)2001.8.26串口调试助手源程序及编程详细过程(二)作者:龚建伟 2001.8.25可以任意转载,但必须注明作者和说明来自,不得作为商用目次:1.建立项目2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据8.发送十六进制字符9.在接收框中以十六进制显示10.如何设置自动发送11.什么是VARIANT数据类型?如何使用VARIANT数据类型?这是串口调试助手源程序及编程详细过程(一)的续篇,首先谢谢朋友们的支持与鼓励。