串口及界面设计文档.docx_第1页
串口及界面设计文档.docx_第2页
串口及界面设计文档.docx_第3页
串口及界面设计文档.docx_第4页
串口及界面设计文档.docx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串口虚拟软件VSPD软件的使用 VSPD是纯软件模拟实现的虚拟串口软件,对串口通讯应用系统程序的调试具有很好的帮助作用。安装并启动该软件后出现如下图1界面。图1 VSPD操作界面图1、 添加串口单击“添加端口”将成对添加虚拟串口,如图1中所示。该计算机中已有物理串口COM1和COM2,已经添加了COM3、COM4虚拟串口。再次点击“添加串口”时将添加COM5、COM6串口。2、 重置串口单击“重置端口”将出现删除所有虚拟串口的界面,确定后将删除所有虚拟串口。3、 虚拟串口的使用虚拟串口你的使用与物理串口一样。但需要注意的是必须按照前面添加时的顺序而成对使用。如上述图1中COM3只能与COM4配对使用。打开两个串口调试助手窗口,一个使用COM3,另一个使用COM4。若波特率、数据位数、奇偶校验都一致时,即可顺利实现双方的数据发送与接收。如图2所示。当用户设计开发应用程序时,使用串口调试助手使用其中一个虚拟串口,而用户程序使用该对的另一个虚拟串口,在串行通讯参数设置一致的情况下,进行发送和接收程序的调试。图2 使用串口调试助手实现两个虚拟串口之间的通讯串口调试助手软件的使用目前辅助用户调试串口应用程序的软件很多,如串口调试助手等,它们的主要功能基本一样,但也有细微区别。有些软件可以实时反映当前计算机的所有串口,包括物理与虚拟串口,有些软件则是提供一定范围内的串口号,供用户选择,如从COM1到COM10。此类软件的使用很简单,不再叙述。用户串口应用程序的设计实现目前编写串口应用程序的方法主要有三种。一是使用串行通讯API函数,二是使用MSCOMM控件,三是使用第三方开发的串行通讯类(如Serialport)或动态链接库。在此介绍使用简单的MSCOMM控件。1、 MSCOMM控件的注册在VS2005/VS2010环境下使用该控件时首先要进行注册。 将MSCOMM控件文件mscomm32.ocx放到windows/system32文件夹下。 点击开始-运行,输入:Regsvr32mscomm32.ocx,按确定按钮,弹出对话框表示成功。图3 MSCOMM控件注册成功界面2、使用方法(1)新建一个MFC应用程序(基于对话框)(2)在对话框上右击鼠标,出现如图4快捷菜单。图4 快捷菜单(3)单击“插入ActiveX控件”,出现如图5界面。选择Microsoft Communication Control. Version 6.0,即可在对话框上出现以电话图标形式的MSCOMM控件。图5 选择MSCOMM控件(4)右击该图标,在快捷菜单中选择“添加变量”,如m_mscomm1。然后在该控件的属性里添加OnComm函数(右侧属性栏上方有一个闪电图标,就是添加消息响应的地方)。(5)添加两个编辑控件,分别添加其对应CString变量m_rev、m_send。 添加一个命令按钮IDC_BUTTON1,用于发送数据。图6 对话框设计(6) 编写代码1)在BOOL CXXXDlg:OnInitDialog()初始化函数里添加如下代码:/ TODO: 在此添加额外的初始化代码m_mscomm1.put_CommPort(3);/端口号为3m_mscomm1.put_InBufferSize(1024);/设置输入缓冲区的大小,Bytesm_mscomm1.put_OutBufferSize(512);/设置输出缓冲区的大小,Bytesif(!m_mscomm1.get_PortOpen() /打开串口m_mscomm1.put_PortOpen(true);m_mscomm1.put_InputMode(1); /设置输入方式为二进制方式m_mscomm1.put_Settings(L9600,n,8,1); /设置波特率等参数m_mscomm1.put_RThreshold(1); /为1表示有一个字符即引发事件m_mscomm1.put_InputLen(0);2)OnCommMscomm1()接收数据代码VARIANT variant_inp;COleSafeArray safearray_inp;long i = 0;int len;char rxdata1000;switch (m_mscomm1.get_CommEvent()case 2:/表示接缓冲区内有字符variant_inp = m_mscomm1.get_Input();/接收数据safearray_inp = variant_inp;len = safearray_inp.GetOneDimSize();for (i = 0; i len; i+)safearray_inp.GetElement(&i, &rxdatai);rxdatai = 0;m_rev=rxdata;UpdateData(false); / 将接收数据进行显示break;default:break;3)发送代码如果是字符串CString: UpdateData();m_mscomm1.put_Output(COleVariant(m_send);如果发送的是字节,程序如下:byteinst9;CByteArray sendArr;sendArr.SetSize(9);for(int j =0; j9; j+)sendArr.SetAt(j, instj);m_mscomm1.put_Output(COleVariant(sendArr);图7通讯结果串口通讯参数设置界面的设计实现串行通讯参数包括串口号、数据位位数、波特率、校验类型及停止位位数等。在对话框界面中通常使用组合框或列表框来实现。1、 使用MFC向导建立对话框在对话框中添加MSCOMM控件,添加其控件变量m_mscomm1。在对话框中添加组合框IDC_COMBO1,为其添加变量m_comnum,类型为int。在IDC_COMBO1属性中的数据项中,添加COM1;COM2;COM3;COM4。注意要用西文。添加组合框IDC_COMBO2,为其添加变量m_boderate,类型为int。在IDC_COMBO2属性中的数据项中,添加4800;9600;19200;38400。添加组合框IDC_COMBO3,为其添加变量m_check,类型为int。在IDC_COMBO3属性中的数据项中,添加n;O;P。添加两个编辑控件,分别添加其对应CString变量m_rev、m_send。添加一个命令按钮IDC_BUTTON1,用于打开串口。添加一个命令按钮IDC_BUTTON2,用于发送数据。2、 打开串口在打开串口按钮的代码中,首先判断各个组合框的值,然后打开相应的串口端口。代码如下:UpdateData();m_mscomm1.put_CommPort(m_comnum+1); /端口号m_mscomm1.put_InBufferSize(1024); /设置输入缓冲区的大小,Bytesm_mscomm1.put_OutBufferSize(512); /设置输出缓冲区的大小,Bytes if(!m_mscomm1.get_PortOpen() /打开串口m_mscomm1.put_PortOpen(true); m_mscomm1.put_InputMode(1); /设置输入方式为二进制方式/m_mscomm1.put_Settings(L9600,n,8,1); /设置波特率等参数CString str,str0,str1,str2,str3,strr;int boderate;strr=,;str2=8;str3=1; boderate = pow(2.0,m_boderate)*4800; str0.Format(_T(%d),boderate);if (m_check=0)str1=n;elseif (m_check=1) str1=O;else str1=P; str=str0+strr+str1+strr+str2+strr+str3;m_mscomm1.put_Settings(str);m_mscomm1.put_RThreshold(1); /为表示有一个字符即引发事件m_mscomm1.put_InputLen(0);3、 接收数据接收事件中的代码如下:VARIANT variant_inp;COleSafeArray safearray_inp;long i = 0;int len;char rxdata1000;switch (m_mscomm1.get_CommEvent()case 2: /表示接缓冲区内有字符variant_inp = m_mscomm1.get_Input();/接收数据safearray_inp = variant_inp;len = safearray_inp.GetOneDimSize();for (i = 0; i len; i+)safearray_inp.GetElement(&i, &rxdatai); rxdatai = 0;m_rev+=rxdata;UpdateData(false);break;default:break;4、 发送数据发送数据按钮的代码为:UpdateData();m_mscomm1.put_Output(COleVariant(m_send);利用CStdioFile类读写文件在使用Visual C+.NET进行编程时,我们经常需要把程序中得到的数据进行保存,以便日后进行数据处理。本文介绍一种使用CStdioFile类的方法将得到的数据保存为txt格式的文本文件,并且可以利用CStdioFile类读取txt文本文件中的数据。MFC中使用CStdioFile类封装了C+运行时刻文件流的操作,流文件采用缓冲方式,支持文件模式和二进制模式文件操作,默认方式为文本模式。CStdioFile类从CFile类继承,具有如下三个构造函数:1、CStdioFile():建立一个CStdioFile类的对象,但不打开文件;2、CStdioFile(FILE* pOpenStream):建立一个CStdioFile类的对象,并将该对象同一个已经打开的文件相联系;3、CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags):建立一个CStdioFile类的对象,同时打开一个文件,nOpenFlags是打开文件的方式,它可以取值如下所述:以上是几种常用的打开方式,还有另外几种可以去查阅相关资料。例如你可以这样创建一个新文件:CStdioFile File;File.Open(文本名.txt, CFile:modeCreate|CFile:modeWrite);表示创建一个名为“文本名”扩展名为TXT的只写文件,另外因为没有说明,默认为以文本方式打开而不是二进制方式。文件的关闭: File.Close();CStdioFile类中有两种特殊的读/写文件的方法,ReadStrng和WriteString,分别读出或写入一个文本行。例如使用 WriteString时,可以这样使用:CStringstr = 这是一行文本n;file.WriteString(str);若要达到同样的目的,对应CFile而言,则应这样定义str = 这是一行文本rn。 下面是几个读写txt文件的例子:写文件的例子:例一:写入一段字符串。/创建文件 CStdioFile file1;file1.Open(_T(文件名.txt),CFile:modeCreate|CFile:modeWrite); /写入文件 CString str1;str1.Format(_T(%s n),_T(hello,world!);file1.WriteString( str1 ); /关闭文件 file1.Close(); 例二:写入一组数据/创建文件 CStdioFile file2;file2.Open(_T(文件名1.txt),CFile:modeCreate|CFile:modeWrite); /写入文件for(int i=1;i=100;i+)floatx,y;x=i*i;y=1.0/i;CString str1,str2;str1.Format(_T(%f),x);str1=str1+_T( );str2.Format(_T(%fn),y);str2=str1+str2;file2.WriteString( str2 ); /关闭文件 file2.Close(); 读文件的例子:(默认位置为你建的工程目录下)/打开文件CStdioFile file2;file2.Open(_T(文件名1.txt),CFile:modeRead); /逐行读取字符串CStringstrText;CStringstrLine; while( file2.ReadString( strLine ) )strText += strLine; MessageBox(strText); /关闭文件 file2.Close();TeeChart用于绘制曲线使用说明TeeChart是Steema Software开发的图表图形组件,它提供了上百种2D和3D图形风格、多达几十种数学和统计功能。本文以VS2010为例,介绍如何使用TeeChart进行绘制曲线(VS2005的使用步骤基本和VS2010相同,不同的地方会在文中说明)。一、teechart8.ocx文件的注册我们需要从网上下载一个teechart8.ocx的文件,使用之前需要先注册一下,将该文件放入目录C:WINDOWSsystem32下,然后点“开始”“运行”,在运行窗口输入:regsvr32 TeeChart8.ocx,如图1.1所示:图1.1然后注册成功会弹出如下一个提示框,说明我们的teechart8.ocx控件注册成功,在vs2010下就可以使用了。图1.2如果不想使用了,可以用regsvr32 -u TeeChart8.ocx 解除对teechart8的注册。二、向工具箱中添加TeeChart pro Activex control v8控件首先建立一个基于对话框的MFC应用程序。然后在菜单栏选择“工具”“选择工具箱项”,在COM组件中选择TeeChart Pro Activex Control v8,选中它,单击“确定”按钮后,即可将TeeChart8.ocx添加到工具箱中,如图2.1、2.3所示。以后就可以像工具箱中其它常规控件一样来使用。另一种办法是在对话框上右击鼠标在快捷菜单中选“插入ActiveX控件”,在随后出现的对话框中选择TeeChart Pro Activex Control v8即可。图2.1图2.3三、TeeChart pro Activex control v8控件的设置在资源视图中打开对话框界面,将工具箱中的 TeeChart pro Activex control v8控件拖到对话框中,鼠标右击该控件,选择属性,然后可以调出该控件的属性,这里我们将该控件的ID改为:IDC_TCHART,当使用多个控件时,可以通过控件的ID对其进行区分,如图3.1所示: 图3.1然后,点击属性页,可以对该控件进行进一步的设置,如图3.2,3.3所示:图3.2双击该控件,同样出现图3.3界面。图3.3首先添加要显示数据所用的曲线。单击“Add”后出现图3.4界面。图3.4选择经过上图的操作以后,我们就成功的添加了一个2D的Fast Line。添加以后,属性页的效果如图3.5所示:图3.5该控件的一些详细参数也可以在图3.5中设置,例如曲线图的名称、曲线的颜色、坐标轴的长度等等。四、添加控件的类和变量为了能够正常的使用控件,需要新增加几个类。这些类继承自TeeChart提供的各种接口。右击“解决方案资源管理器”或“类试图”中项目的名称,在快捷菜单中选择“添加”“类”,出现图4.1界面,图中选择“TypeLib中的MFC类”。单击“添加”,在图4.2中,选择注册表中的TeeChart pro Activex control v8控件。图4.1图4.2进一步需要添加IAxes、 IAxis 、IScroll 、ISeries 、ITChart 5个接口,对应生成的类为CAxes、 CAxis 、CScroll 、CSeries 、CTChart,如图4.3所示。图4.3这几个类添加完成后,会在解决方案资源管理器中多出了这几个类的头文件,表示这些类已经成功添加进去了,如图4.4所示:图4.4添加完类之后,我们就需要为控件添加一个新的变量,打开对话框,在控件的上方右击,具体步骤如图4.5,其中变量类型和变量名都可以自己设定:图4.5在完成以上步骤后,我们需要注意以下几个问题:一、在XXXDlg.cpp(XXX为你创建的工程名)文件中加入下面几行代码,将与TeeChart有关的几个头文件包含进去:#includeCTChart.h#includeCAxis.h#includeCAxes.h#includeCScroll.h#includeCSeries.h#includetchart1.h /这个是在为控件添加变量时生成的头文件,文件名在图4.5中设定二、在XXXDlg.cpp文件

温馨提示

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

评论

0/150

提交评论