下载

2下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 基于VC串口通信与控制系统论文

基于VC串口通信与控制系统论文.doc

基于VC串口通信与控制系统论文

IT工作者
2012-02-22 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《基于VC串口通信与控制系统论文doc》,可适用于IT/计算机领域

串口通信与控制系统串口通信与控制系统摘要在实验室和工业应用中串口是常用的计算机与外部串行设备之间的数据传输通道由于串行通信方便易行所以应用广泛。本次设计的目标在于:在VC的环境下编写使用C语言,SQL数据库的串口通信程序控制由单片微机控制的磨粉机原要求能够通过串口扩展同时监控台机器由于目的在于进行串口通信设计的尝试所以这里只是针对一台单片微机进行程序设计。首先操作人员能够对串口参数进行配置。其次当由单片微机控制的磨粉机的工作数据由串口传到计算机时操作人员能够实时监控其工作状态工作数据根据情况并能更改其工作参数。这样就要求设计适合本程序的串口通信协议。定时接受来自串口的数据帧磨粉机的数据大致可以分为三类此处在数据帧中使用AX,BX,CX来对数据分类。按照通信协议接受发送数据并有一定的数据帧查错能力。另外在安全性方面需要一定的保障。这里采用了简单保密功能操作人员能够输入密码更改原有的密码这里的密码功能实现比较简单有很大的改进空间可以使用复杂的算法确保更高要求的保密性。本次项目设计就使用VC对串口进行编程自己设计串口通信协议进行了一些尝试虽然能够基本完成设计要求但是还有很多地方需要改进。关键词:串行通信、VC、WinAPI、MFC位程序目录第一部分需求分析开发背景功能要求功能实现概述第二部分开发工具概述VisualC及MFCSQLServer简介串口通信协议(通信模式)第三部分主要程序代码及注释.BasicCom类.MainFrame类.CPassword类.CChangePassword类CComConfig类.CBasicDialog类CIosetting类.CChangeSetting类.CGroupSetting类第四部分英文文献的阅读和翻译英文中文第五部分附录致谢信参考文献功能部分主要程序第一部分需求分析开发背景计算机串口编程在通信软件中有着十分广泛的应用如电话传真视频控制等。一般情况下涉及到远程通信自动控制的行业通常也会涉及到串口通信技术。工业控制领域(如DCS系统)经常涉及到串行通信问题。为了实现微机和单片机之间的数据交换人们用各种不同方法实现串行通信如DOS下采用汇编语言或C语言。但在Windows环境下却存在一些困难和不足。在Windows操作系统已经占据统治地位的情况下(何况有些系统根本不支持DOS如Windows)开发Windows环境下串行通信技术就显得日益重要。在Windows应用程序的开发中我们常常需要面临与外围数据源设备通信的问题。计算机和单片机(如MCS)都具有串行通信口可以设计相应的串口通信程序完成二者之间的数据通信任务。实际工作中利用串口完成通信任务的时候非常之多。本设计是在WINDOWSXP操作系统下设计自己的通信协议借助VC编程环境使用C应用SQL数据库实现串口通信数据库调用。功能要求设计适合的串口通信协议使用SQL数据库存储数据用VC编写程序使得计算机能够定时从串口获得数据按照自己的协议拆分数据并按照信息发送到各个Dialog。再由程序将数据正确的分配给每一个控件。当操作人员看见异常的数据或希望更改机械的工作参数时可以通过程序把新的更改后的数据通过串口发送出去。机械常用的整组数据存放入数据库中操作人员可以更改数据表并同时将新数据发送。.功能实现概述首先由功能需求表分析出程序的总体设计方案。整个程序可以分为三块:()界面设计程序整体框架组建的前台VC块。()串口通信协议设计通信功能函数编制的底层通信块。()常用数据表更改存储的后台SQL数据库块。关于VC块程序使用了比较常用的SDI风格由MainFrm实现数据的处理分配存储及发送。之所以由MainFrm掌握数据处理发送存储计算等功能是因为这样不但大大简化了程序代码的量而且较纯OOP更能减少程序复杂度降低程序错误发生的概率修改代码的难度。关于通信块是本程序的重点。首先要设计适合本程序的通信协议定时接受来自串口的数据帧由于磨面单片机的功能大致可以分为三个方面此处在数据帧中使用AX,BX,CX来对接收发送的数据进行分类。按照通信协议接受发送数据并有一定的数据帧查错能力。要有完整的通信协议框架。要设计适合本程序的帧并有一定的安全校验功能。其次就是以C语言编写的底层通信类此类通过WINDOWS与计算机硬件建立基本控制功能然后在这基础上编写自己的符合功能要求(比如数据帧的拆分解释组建等)的功能类。再次就是数据发送由于数据小总量也不大为了提高效率这里的处理是先将数据存入每个表对应的txt文件再一次性将组中的数据按照协议从操作人员选定的端口采用指定的参数全发送到串口。关于SQL数据库块按照需求分析得结论在SQL数据库中添加张工作组表一张机械时间表一张原料比例表。程序能够自由的调用存储在SQL中的表并能够有添加删除更改数据的功能。其次由于现代软件强调数据保密控制权限的有界性所以初步尝试制作了密码的设定更改功能。(这里是把用户的新密码保存在一个TXT文件中可以加入算法进行改进)。综上所述经过考虑决定本程序采用一个文档(Document)对应一个视图(View)的SDI界面从左到右依次有输入密码(Password)以及更改密码(ChangePassword)的No菜单串口参数设置(ComConfig)的No菜单主要对话框的No菜单更改参数组(Group)时间组(TimeTable)的No菜单以及About对话框的No菜单。第二部分开发工具概述VisualC及MFCMFC库和VisualC提供了可以用于创建各种应用程序的环境。VisualC可以帮助您开发满足各种商业需求的应用程序。它提供了各种功能和工具。VisualC特色包括:()本机COM支持可视化的COM编辑与位置和语言无关的COM浏览MFC模板以及编译器支持简化了基于组件的开发。()VisualSchemaDisigner通过从桌面远程分析MicrosoftSQLServer数据库的模式(Schema),提高了数据库应用程序开发的效率。()MicrosoftTransactionServerMicrosoftTransactionServer帮助您建立高性能的基于事务的应用程序。()活动文档服务器支持VisualC提供了创建活动文档服务器的向导和可编程支持这些活动文档服务器可以在任何活动文档服务器中调用如在MicrosoftOffice和MicrosoftInternetExplorer中。VisualC的开发环境包括:()帮助管理您的工程的工程工作区。()编译工程的工具。()设计用户界面和创建资源的编译器。()共享的开发组件包括一个优化的编译器一个增量链接器和一个集成的调试器。VisualC有三个版本:标准版除了代码优化性能分析器(Profiler)和与MFC库的静态链接外标准版包含了专业版的所有其它功能。专业版使您能够开发和发布商用等级的软件产品。其功能包括VFC,ActiveTemplateLibrary(ATL,活动模板库)COM和OLEDB。企业版提供了建立和验证企业级COM应用程序的工具和组件。该版本中包含专业版中的所有功能另外还包括MicrosoftTransactionServer,SQL编辑器和调试器MicrosoftVisualSourceSafe,以及对ActiveX对象(ADO)和远程数据对象(RDO)的支持。MFC库的功能:MFC库是基于C类的一个集合和一个应用程序框架主要用于创建MicrosoftWindows应用程序。这个类的集合将C语言扩展为包括创建基于Windows的应用程序所需要的大部分基本结构元素。应用程序框架则定义了应用程序的结构并为应用程序处理许多常规任务。MFC库是基于Win应用程序编程接口(API)之上而建立的。该API是操作系统为应用程序提供的一系列函数。MFC展示了代表Windows操作系统的通用对象的基本类。MFC并不封装或包括整个API它只包括主要的结构组件和常用组件。由于MFC是用C编写的因此您可以很容易地使用WinAPI对操作系统进行本机调用。使用MFC的益处:MFC库使您能够利用专业的Windows开发人员的成果。MFC缩短了开发时间使代码更简洁在不降低编程自由度和灵活性的前提下提供支持并提供了对难于编程的用户界面元素和技术(如ActiveX和Internet编程)的方便访问。MFC通过OLE DB模板和ADO简化数据库编程并通过WindowsSocket简化网络编程。MFC使对诸如属性表打印预览和浮动工具栏等功能的编程变得十分简单。在开发全功能的Windows应用程序数据库应用程序ActiveX控件和组件以及Internet应用程序时MFC可提供许多优点例如:()提供一个应用程序框架用户可在其上建立Windows应用程序。()兼容以前版本的可重用的C类。()行业中最大的可重用的C源代码库。()与VisualC集成。文档视图体系结构:MFC提供了多种类来满足范围广泛的编程需求。使用MFC编程的第一步是熟悉这些类并学习它们在MFC层次结构中的相互关系。某些类可直接使用其余的类可作为创建其它类的基类。学习MFC类时将它们按类别组织是很有帮助的。一些重要的MFC类的类别包括:()应用程序体系结构类。()用户界面类。()数据库类。()Internet类。MFC编程依赖消息的传递推动整个程序的运行。SQLServer简介SQLServer是一个关系数据库管理系统它最初是由MicrosoftSybase和AshtonTate三家公司共同开发的于年推出了第一个OS版本在WindowsNT推出后Microsoft与Sybase在SQLServer的开发上就分道扬镳了Microsoft将SQLServer移植到WindowsNT系统上专注于开发推广SQLServer的WindowsNT版本Sybase则较专注于SQLServer在UNIX操作系统上的应用在本书中介绍的是MicrosoftSQLServer以后简称为SQLServer或MSSQLServerSQLServer是Microsoft公司推出的SQLServer数据库管理系统的最新版本该版本继承了SQLServer版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行MicrosoftWindows的膝上型电脑到运行MicrosoftWindows的大型多处理器的服务器等多种平台使用。串口通信协议(通信模式)在实验室和工业应用中串口是常用的计算机与外部串行设备之间的数据传输通道由于串行通信方便易行所以应用广泛。依据不同的条件实现对串口的灵活编程控制是我们所需要的。基本原理:串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时字节数据转换为串行的位。在接收数据时串行的位被转换为字节数据。在Windows环境(WindowsNT、Win、Windows)下串口是系统资源的一部分。应用程序要使用串口进行通信必须在使用之前向操作系统提出资源申请要求(打开串口)通信完成后必须释放资源(关闭串口)。串口通信程序的流程如下图:二.串口信号线的接法一个完整的RSC接口有根线采用标准的芯插头座(或者芯插头座)。芯和芯的主要信号线相同。以下的介绍是以芯的RSC为例。①主要信号线定义:脚:发送数据TXD脚:接收数据RXD脚:请求发送RTS脚:清除发送CTS脚:数据设备就绪DSR脚:数据终端就绪DTR脚:数据载波检测DCD脚:保护地脚:信号地。②电气特性:数据传输速率最大可到Kbps,最大距离仅m注:看了微软的MSDN其WindowsAPI中关于串行通讯设备(不一定都是串口RSC或RS或RS)速率的设置最大可支持到RS即Kbps!也不知道到底是什么串行通讯设备?但不管怎样一般主机和单片机的串口通讯大多都在bps,可以满足通讯需求。③接口的典型应用:大多数计算机应用系统与智能单元之间只需使用到根信号线即可工作。这时除了TXD、RXD以外还需使用RTS、CTS、DCD、DTR、DSR等信号线。(当然在程序中也需要对相应的信号线进行设置。)        图最简单的RSC信号线接法  以上接法在设计程序时直接进行数据的接收和发送就可以了不需要对信号线的状态进行判断或设置。(如果应用的场合需要使用握手信号等需要对相应的信号线的状态进行监测或设置。)Windows下串行通信与以往DOS下串行通信程序不同的是Windows不提倡应用程序直接控制硬件而是通过Windows操作系统提供的设备驱动程序来进行数据传递。串行口在Win中是作为文件来进行处理的而不是直接对端口进行操作对于串行通信Win提供了相应的文件IO函数与通信函数通过了解这些函数的使用可以编制出符合不同需要的通信程序。与通信设备相关的结构有COMMCONFIGCOMMPROPCOMMTIMEOUTSCOMSTATDCBMODEMDEVCAPSMODEMSETTINGS共个与通信有关的WindowsAPI函数共有个详细说明可参考MSDN帮助文件。以下将给出实现串行通信的三种方法:方法一:使用VC提供的串行通信控件MSComm。首先在对话框中创建通信控件若Control工具栏中缺少该控件可通过菜单Project>AddtoProject>ComponentsandControl插入即可再将该控件从工具箱中拉到对话框中。此时你只需要关心控件提供的对Windows通讯驱动程序的API函数的接口。换句话说只需要设置和监视MSComm控件的属性和事件。打开所需串口后需要考虑串口通信的时机。在接收或发送数据过程中可能需要监视并响应一些事件和错误所以事件驱动是处理串行端口交互作用的一种非常有效的方法。捕捉并检查通讯事件和错误的值。发生通讯事件或错误时将触发串口事件串口属性的值将被改变应用程序检查受到的消息属性值并作出相应的反应。方法二:在单线程中实现自定义的串口通信类控件简单易用但由于必须拿到对话框中使用在一些需要在线程中实现通信的应用场合控件的使用显得捉襟见肘。此时若能够按不同需要定制灵活的串口通信类将弥补控件的不足。实现步骤:()打开串口获取串口资源句柄()串口设置()串口读写操作一般采用编写自己的数据IOC函数。若对端口数据的响应时间要求较严格可采用事件驱动IO读写Windows定义了种串口通信事件较常用的有:EVRXCHAR:接收到一个字节并放入输入缓冲区。EVRXEMPTY:输出缓冲区中的最后一个字符发送出去。EVRXFLAG:接收到事件字符(DCB结构中EvtChar成员)放入输入缓冲区。方法三:多线程下实现串行通信方法一二适用于单线程通信。在很多工业控制系统中常通过扩展串口连接多个外设各外设发送数据的重复频率不同要求后台实时无差错捕捉采集处理记录各端口数据这就需要在自定义的串行通信类中创建端口监视线程以便在指定的事件发生时向相关的窗口发送通知消息。线程的基本概念可详见VC参考书目Windows内部的抢先调度程序在活动的线程之间分配CPU时间Win区分两种不同类型的线程一种是用户界面线程UI(UserInterfaceThread),它包含消息循环或消息泵用于处理接收到的消息另一种是工作线程(WorkThread)它没有消息循环用于执行后台任务。用于监视串口事件的线程即为工作线程。多线程通信类的编写在端口的配置连接部分与单线程通信类相同在端口配置完毕后最重要的是根据实际情况建立多线程之间的同步对象如信号灯临界区事件等相关细节可参考VC中的同步类。在各成员函数中完成对各串口数据的接收处理但必须保证在下一次监测到有数据到来之前能够完成所有的中间处理工作。否则将造成数据的捕捉错误。多线程的实现可以使得各端口独立准确地实现串行通信使串口通信具有更广泛的灵活性与严格性且充分利用了CPU时间。但在具体的实时监控系统中如何协调多个线程线程之间以何种方式实现同步也是在多线程串行通信程序实现的难点。程序采用上述第二种方法编写了基于Windows消息传递与串口操作的基础类并利用此类编写适合本次毕业设计的功能类。应用程序送过来的数据作为一个按照通信协议进行分帧切割后为每帧加上帧头和校验和放入内部缓冲区准备发送在接受端分帧的数据去掉帧头重新归到接受缓冲区流由应用程序接收。整个过程如下图:在发送数据前发送方将应用程序希望发送的数据进行分帧然后按下面的步骤进行通信。.握手a由发送端发SYN信号等待反馈。b接收端受到SYN后发回ACK信号。c发送端收到ACK信号后由发送端发出控制首帧。d接受端收到控制首帧CHECKSUM错误则发RESEND信号然后重复步骤cd。e发送端收到ACK信号后转到()数据传输的步骤a。.数据传输a由发送端发送第i帧帧头等待反馈若发送方发现该帧是ABORT控制帧则转到()断开连接的步骤a。b接受端收到帧头后帧长度校验和错误则发RESEND信号然后重复ab。如果正确发ACK信号。c若发送端收到ACK信号则发送帧中数据和校验和。d接收端收到数据后负载数据校验和错误则发RESEND信号然后重复步骤cd如果正确发ACK信号。e若发送端收到ACK信号则该帧数据发送成功。发送端发送SYN信号开始下一帧的握手过程。f若接收端收到SYN信号则发送ACK信号进行确认。g若发送端接收到ACK信号则重复ae步骤进行下一帧的传输。.断开连接a发送方法送ABORT控制帧准备结束此次通信。b若接收端收到ABORT帧则发送ACK信号准备结束此次通信。c若发送端收到ACK信号则发送BYE控制信号。d若接收端收到BYE信号则拆除此次连接同时发送ACK信号。e发送方受到ACK信号后拆除连接。本程序设计思想基于帧传输方式即在向串口发送数据是一帧一帧地发送。对于上层应用(如文件传输)来说应用程序所发送的和所接收的都是数据流即如果应用程序需要进行上层的协议解释的话它将面对这些流数据的重新拼装。为保证可靠的传输在传输开始前通过握手建立连接(类似TCPIP),在每一帧的传输中采用发送应答重连失败方式。本程序的帧格式:第三部分主要程序代码及注释.BasicCom类:此类为本程序能过实现的基础是与接口交互的基础类(由于Windows操作系统不赞同程序对硬件的直接操控故需要编写自己的基础类)。它完成了程序绝大部分的底层工作:串口方面:它提供了与程序功能实现类的接口:打开串口从串口读取数据将读取的数据存入缓冲区向串口写数据将要发送的数据存入缓冲区关闭串口。操作系统方面:它提供了自己对串口的消息的处理线程:打开监视串口线程关闭监视串口线程定时接受发送线程向操作系统申请了一些自己定义的消息以及处理函数(这样在操作系统的一些默认消息处理前截取并处理这些消息)。主要函数如下:初始化串口函数:BOOLCBasicCom::InitPort(CWnd*pPortOwner,UINTportnr,UINTbaud,charparity,UINTdatabits,UINTstopbits,DWORDdwCommEvents,UINTwritebuffersize)定义串口线程:UINTCBasicCom::CommThread(LPVOIDpParam)其中定义消息的传递路径:::SendMessage(port>mpOwner>mhWnd,WMCOMMCTSDETECTED,(WPARAM),(LPARAM)port>mnPortNr)if(CommEventEVRXFLAG)::SendMessage(port>mpOwner>mhWnd,WMCOMMRXFLAGDETECTED,(WPARAM),(LPARAM)port>mnPortNr)if(CommEventEVBREAK)::SendMessage(port>mpOwner>mhWnd,WMCOMMBREAKDETECTED,(WPARAM),(LPARAM)port>mnPortNr)if(CommEventEVERR)::SendMessage(port>mpOwner>mhWnd,WMCOMMERRDETECTED,(WPARAM),(LPARAM)port>mnPortNr)if(CommEventEVRING)::SendMessage(port>mpOwner>mhWnd,WMCOMMRINGDETECTED,(WPARAM),(LPARAM)port>mnPortNr)定义开始监视串口的线程:BOOLCBasicCom::StartMonitoring()定义(有中断出错或其他情况下)重新开始监视串口线程:BOOLCBasicCom::RestartMonitoring()定义停止监视串口线程:BOOLCBasicCom::StopMonitoring()定义线程出错的处理函数:voidCBasicCom::ProcessErrorMessage(char*ErrorText)定义向串口写字符函数:voidCBasicCom::WriteChar(CBasicCom*port)定义接受自符函数:voidCBasicCom::ReceiveChar(CBasicCom*port,COMSTATcomstat)定义向端口写的函数:(参数为CString,CStringGetLength())voidCBasicCom::WriteToPort(BYTE*string,intnLength)定义接受事件的函数:DWORDCBasicCom::GetCommEvents()定义得到写缓冲区的大小的函数:DWORDCBasicCom::GetWriteBufferSize()定义向端口写的函数:(参数为CString)voidCBasicCom::WriteToPort(CStringstr)定义读函数(参数为端口号长度)BYTE*CBasicCom::ReadBlock(CBasicCom*port,intreadLen).MainFrame程序主界面MainFrame定义并实现程序的主要功能(定义串口参数按串口通信协议组织数据帧拆分接受数据帧得到数据发送数据帧)。其中主要函数:发送数据帧函数:BOOLCMainFrame::SendFile(inti)本程序中定义:CBasicDialog,i=CIosetting,i=CChangeDate,i=按照本程序的通信协议组织数据帧:BYTE*CMainFrame::FormatPack(BYTE*buf,intbuflen,charmark)按照本程序的通信协议拆分接受数据帧得到数据的函数:BOOLCMainFrame::ReceiveFile().CPassword类:密码页界面次类负责权限的设定。操作人员通过输入正确的密码可以:更改密码。对串口参数进行设置。对从串口传输进来的数据进行监视更改在发送新数据。对数据库的工作组时间表比例参数表进行更改并通过串口发送新数据。这里采用了用CString类型的变量存储密码并存放在TXT类型的文件中(在save文件夹中)主要函数名及代码段为:voidCComConfig::OnOK()char*pszFileName="D:MYDOCUMENTLiquidgengex新建文件夹ControlSystemsavepasswordtxt"if(!myFileOpen(pszFileName,CFile::modeRead,fileException))……CArchivear(myFile,CArchive::load)ar>>mpassword.CChangePassword类:更改密码界面此类完成密码的更改当操作人员输入正确的旧密码新密码将以CString的类型存入本程序所在文件夹下SAVEPASSWORDTXT内当存储成功显示已经更改成功。主要的函数:主要函数名及代码段为:voidCMainFrame::OnChangepass()UpdateData(TRUE)……CArchiverar(myFile,CArchive::load)rar>>mpasswordif(bdDoModal()==IDCANCEL)returnif(bdmformalpassword!=mpassword){AfxMessageBox("密码错误")return}……mpassword=bdmnewpasswordAfxMessageBox("设置密码成功")CComConfig类:串口参数设置界面次类负责串口参数的基本设定。操作人员可以设定的内容为:端口号数据传输率数据位校验位停止位发送缓冲区的大小。经过程序测试端口返回结果。当操作人员按下OK时程序应当按照接收到的参数初始化串口并显示初始化结果主要函数名及代码段为:voidCComConfig::OnOK()……try{if(bdInitPort(this,atoi(mstrComm),atoi(mstrBaudRate),atoi(mstrParity),atoi(mstrDataBits),atoi(mstrStopBits))){bdStartMonitoring()AfxMessageBox("com已经打开!")}……catch(CExceptione){AfxMessageBox("com口不可用或者输入不正确!")}CDialog::OnOK()以下的CBasicDialog类CIosetting类CGroupSetting类CChangeSetting类为程序主要与用户交互的类:.CBasicDialog类:基本机械参数设置界面此类负责显示从串口得到的基本机械参数据操作人员如果更改了参数新数据通过串口传送出去。当操作人员按下OK时程序应当把新数据写入串口并显示发送结果主要函数名及代码段为:voidCBasicDialog::OnOK()CMainFrame*frame=(CMainFrame*)GetParent()UpdateData(TRUE)……CFilemFilechar*mfileName="D:MYDOCUMENTLiquidgengex新建文件夹ControlSystemsavetxt"mFileOpen(mfileName,CFile::modeWrite|CFile::modeCreate)CArchivecar(mFile,CArchive::store)car<<strframe>SendFile()mFileClose()CDialog::OnOK()CIosetting类:IO参数设置界面此类负责显示从串口得到的基本机械IO数据操作人员如果更改了参数新数据通过串口传送出去。当操作人员按下OK时程序应当把新数据写入串口并显示发送结果主要函数名及代码段为:BOOLCIosetting::OnInitDialog(){CDialog::OnInitDialog()CMainFrame*frame=(CMainFrame*)GetParent()if(atoi(frame>mbb)==x)miosettingmodalSetWindowText("手动")elseif(atoi(frame>mbb)==x)miosettingmodalSetWindowText("自动")……UpdateData(FALSE)this>SetTimer(,,)returnTRUE}voidCIosetting::OnOK(){CMainFrame*frame=(CMainFrame*)GetParent()UpdateData(TRUE)……CFilemFilechar*mfileName="D:MYDOCUMENTLiquidgengex新建文件夹ControlSystemsavetxt"mFileOpen(mfileName,CFile::modeWrite|CFile::modeCreate)CArchivecar(mFile,CArchive::store)car<<strframe>SendFile()mFileClose()CDialog::OnOK()CDialog::OnOK()}.CChangeSetting类:发送更改后的工作组数据界面此类负责更改从SQL得到的基本机械组数据操作人员如果更改了参数新数据通过串口传送出去。当操作人员按下OK时程序应当把新数据写入串口并显示发送结果主要函数为名及程序段为:voidCChangeSetting::OnOK(){CMainFrame*frame=(CMainFrame*)GetParent()UpdateData(TRUE)CStringstrstrInsert(strGetLength(),mchangestr)……CFilemFilechar*mfileName="D:MYDOCUMENTLiquidgengex新建文件夹ControlSystemsavetxt"mFileOpen(mfileName,CFile::modeWrite|CFile::modeCreate)CArchivecar(mFile,CArchive::store)car<<strframe>SendFile()mFileClose()CDialog::OnOK()}.CGroupSetting类:连接数据库表界面此类负责显示从SQL得到的基本机械组数据此工程中在数据库中的表有三种:机械工作组表机械工作时间表原料比例参数表。以下是此次工程的数据库表:工作组参数表工作组参数表工作组参数表工作组参数表工作组参数表原料比例参数表机械工作时间表其中机械工作组表存储了当前机械的理论工作参数有五种工作方式。原料比例参数表存储了当前机械的理论原料比例。机械工作时表存储了当前机械的理论工作反应时间工作模式切换所需要的时间等。在程序中此部分的解决方法采用VC控件。由于C代码过多特别是基础通信类功能实现类还有很多代码并非关键所以以上只是截取了少量有代表性的代码详情请参照ControlSystem程序。第四部分英文文献的阅读和翻译英文:IntroductiontoObjectsThegenesisofthecomputerrevolutionwasinamachineThegenesisofourprogramminglanguagesthustendstolooklikethatmachineButcomputersarenotsomuchmachinesastheyaremindamplificationtools(“bicyclesforthemind,”asSteveJobsisfondofsaying)andadifferentkindofexpressivemediumAsaresult,thetoolsarebeginningtolooklesslikemachinesandmorelikepartsofourminds,andalsolikeotherformsofexpressionsuchaswriting,painting,sculpture,animation,andfilmmakingObjectorientedprogramming(OOP)ispartofthismovementtowardusingthecomputerasanexpressivemediumThischapterwillintroduceyoutothebasicconceptsofOOP,includinganoverviewofdevelopmentmethodsThischapter,andthisbook,assumethatyouhavehadexperienceinaproceduralprogramminglanguage,althoughnotnecessarilyCIfyouthinkyouneedmorepreparationinprogrammingandthesyntaxofCbeforetacklingthisbook,youshouldworkthroughtheThinkinginC:FoundationsforCandJavatrainingCDROM,boundinwiththisbookandalsoavailableatwwwBruceEckelcomThischapterisbackgroundandsupplementarymaterialManypeopledonotfeelcomfortablewadingintoobjectorientedprogrammingwithoutunderstandingthebigpicturefirstThus,therearemanyconceptsthatareintroducedheretogiveyouasolidoverviewofOOPHowever,manyotherpeopledon’tgetthebigpictureconceptsuntilthey’veseensomeofthemechanicsfirstthesepeoplemaybecomeboggeddownandlostwithoutsomecodetogettheirhandsonIfyou’repartofthislattergroupandareeagertogettothespecificsofthelanguage,feelfreetojumppastthischapterskippingitatthispointwillnotpreventyoufromwritingprogramsorlearningthelanguageHowever,youwillwanttocomebackThinkinginJavawwwBruceEckelcomhereeventuallytofillinyourknowledgesoyoucanunderstandwhyobjectsareimportantandhowtodesignwiththemTheprogressofabstractionAllprogramminglanguagesprovideabstractionsItcanbearguedthatthecomplexityoftheproblemsyou’reabletosolveisdirectlyrelatedtothekindandqualityofabstractionBy“kind”Imean,“Whatisitthatyouareabstracting”AssemblylanguageisasmallabstractionoftheunderlyingmachineManysocalled“imperative”languagesthatfollowed(suchasFortran,BASIC,andC)wereabstractionsofassemblylanguageTheselanguagesarebigimprovementsoverassemblylanguage,buttheirprimaryabstractionstillrequiresyoutothinkintermsofthestructureofthecomputerratherthanthestructureoftheproblemyouaretryingtosolveTheprogrammermustestablishtheassociationbetweenthemachinemodel(inthe“solutionspace,”whichistheplacewhereyou’remodelingthatproblem,suchasacomputer)andthemodeloftheproblemthatisactuallybeingsolved(inthe“problemspace,”whichistheplacewheretheproblemexists)Theeffortrequiredtoperformthismapping,andthefactthatitisextrinsictotheprogramminglanguage,producesprogramsthataredifficulttowriteandexpensivetomaintain,andasasideeffectcreatedtheentire“programmingmethods”industryThealternativetomodelingthemachineistomodeltheproblem

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/36

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利