计算机控制工程复习(含答案)_第1页
计算机控制工程复习(含答案)_第2页
计算机控制工程复习(含答案)_第3页
计算机控制工程复习(含答案)_第4页
计算机控制工程复习(含答案)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机控制工程复习题一、 填空题1. 根据计算机在控制中的典型应用,可将计算机控制系统划分为操作指导控制系统、直接数字控制系统、监督控制系统、分布式控制系统和现场总线控制系统。2. 计算机控制系统由硬件和软件两部分组成。3. 假设比特率为B bps,一次谐波频率为 B/8 Hz,普通语音级线路截至频率为3000Hz,则允许通过最高谐波次数为 24000/B 。4. 数字通信系统主要技术指标为传输速率、出错率、信道容量。5. 实现数据交换方法主要有电路交换、报文交换及分组交换。6. RS232串口标准传输方式为单端收发,RS485标准传输方式为平衡传输方式。7. 常用的软件调试方式有强行排错法、

2、回溯排错法、归纳排错法及演绎排错法。8. MSComm控件传输数据类型可分为纯文本数据和二进制数据。9. 使用WinAPI编写串口通信程序读写操作有同步和异步两种方式。10. 基于WinAPI串口通信程序数据接受主要有查询和事件驱动两种方式。11. Windows多线程编程方式主要有Win32API、标准C库以及MFC类库三种方式。12. 在Windows多线程编程方式中,线程之间主要采用全局变量和自定义消息两种方式进行通信。13. Win32API提供临界区、互斥对象、信号量及事件对象实现线程之间的同步。14. 控制网络和信息网络集成主要采用网络互联、动态数据交换及数据库技术。15. 软件体

3、系结构主要包括B/S、C/S及单机三种模式。二、 简单题1、试阐述网络体系结构、层次模型及协议之间的关系。参考答案:层次模型决定是网络模型的分层数及每层的功能定义;协议描述对等层之间的数据传输方式;网络体系结构包括层次模型及协议两个方面。2、试阐述协议、服务、接口之间的关系;参考答案:服务即功能;接口即调用方式;协议则是服务的实现方式。三者是紧密相关的。3、在计算机和单片机通信过程中,考虑下位机(单片机)程序为测试程序,上位机(PC)程序为被测试程序,试举例说明二者正常数据采集(通信)过程。参考答案:4、试说明MSComm控件RThreshold属性含义。参考答案:该属性是一个阈值。当接受缓冲

4、区中字符数达到阈值时,MSComm控件产生OnComm事件,并且CommEvent属性会设置为ComEvReceive,即接受事件。若设置为0时,则不论接受缓冲区中有多少字符,都不会产生OnComm事件。5、试说明MSComm控件SThreshold属性含义。参考答案:该属性是一个阈值。当发送缓冲区中的字符数达到阈值时,MSComm控件将产生OnComm事件,并且CommEvent属性被设置为CommEvSend值。6、假设串口采用半双工方式,使用一问一答方式通信协议,接受数据长度存在10字节、15字节和20字节三种可能性的情况下,简要说明接受数据的实际处理方法。参考答案:置RThreshol

5、d为10,在OnComm事件中预读10个字节,判断是否完整帧。若是完整帧,则设置InputLen为0或10,然后使用GetInput()读取即可。否则设置InputLen为5,然后GetInput()读取,与前10个字节合并一帧,判断是否完整。如是非完整帧则设置InputLen为5,然后GetInput()读取。7、假设串口采用半双工方式,使用一问一答方式通信协议,接受数据长度长度不确定的情况下,简要说明接受数据实际处理方法:参考答案:数据通常包含有特定格式的数据头,可以通过数据头计算出整个数据帧的长度。假定这些特定格式的数据头长度为10字节。按照下述步骤处理:设置RThreshold=10,

6、在OnComm事件中首先设置InputLen=10,使用GetInput()函数读取缓冲区,并根据读取数据判断整个数据帧长度。然后读取InBufferSize属性值,并判断该值是否为整个数据帧长度与10之差;若不是,则反复读取,直至该值为整个数据帧长度与10之差。此时设置InputLen=0或InBufferSize值,并使用GetInput( )函数读取缓冲区,将读取数据与前10个数据合并成一个完整的数据帧。8、简要说明采用MSComm控件进行串口数据采集程序设计步骤。参考答案:加载控件;初始化及打开串口;事件处理;关闭串口;通信协议约定。9、简要说明在基于对话框程序中使用MSComm控件的

7、操作步骤。参考答案:拖放控件图标至窗口,创建控件ID;在对话框头文件申明CMSComm类变量及引用控件类头文件;创建CMSComm实例;建立控件事件响应代码框架。10、简要说明WinAPI串口通信同步查询编程方式操作步骤。参考答案:CreateFile (非重叠方式); 初始化串口句柄; WriteFile(发送数据); ReadFile (读取数据);CloseFile (关闭串口)。11、简要说明WinAPI串口通信异步重叠I/O查询编程方式操作步骤。参考答案:定义全局变量;创建串口;发出读写操作;读写线程函数的建立; 关闭串口;12、简要说明Windows编程中HANDLE(句柄)的概念

8、。参考答案:指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间接访问对象的模式增强了系统对引用对象的控制。13、简要说明Windows多线程编程概念。参考答案:每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完

9、成不同的工作,称为多线程。线程和进程的区别在于子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。13、简要说明Windows中线程和进程的关系。参考答案:进程:进程是一个程序实例;进程占据4GB地址空间,在该空间存放应用程序执行所需要的各种资源;Win32进程没有活力,是静态的。 线程:线程是CPU调度计算任务的最小单位;Win32进程创建时,会自动创建一个主线程;主线程可以创建其它线程(辅助线程)。14、简要说明Windo

10、ws中终止线程的方法。参考答案:终止线程有三种方法:线程函数自然退出;内部使用退出函数AfxEndThreadExitThread_endthread;外部使用TerminateThread函数。15、如何在MFC类库中使用自定义消息实现线程之间通信?参考答案:(1) 声明自定义消息:在头文件顶部加入消息名称声明: const WM_THREADMSG = WM_USER+100; (2) 声明消息响应函数:在头文件 /AFX_MSG和“DECLARE_MESSAGE_MAP()”之间声明消息响应函数: Afx_msg LONG OnThreadMsg(WPARAM wParam, LPARA

11、M, lParam)(3). 建立消息连接:在实现文件/AFX_MSG_MAP和 “END_MESSAGE_MAP()” 之间: ON_MESSAGE(WM_THREADMSG, OnThreadMsg)(4). 编写消息响应函数:在实现文件中,添加消息函数函数的实现体: LONG CMyClass:OnThreadMsg(WPARAM wParam, LPARAM lParam) / 加入响应函数的具体处理代码(5). 寄送自定义消息: BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);16、简要说明OS

12、I/RM模型中物理层定义。参考答案:利用物理传输介质为数据链路层提供物理连接,以透明地传送比特流。物理层实际上是设备之间的物理接口,它规定了机械特性、电气特性、功能特性及过程特性。17、简要说明OSI/RM模型中数据链路层的主要功能。参考答案:提供可靠的比特流传输服务。18、简要说明TCP/IP层次模型。参考答案:应用层、传输层(TCP/UDP)、互联网层、主机至网络层。19、简要说明局域网参考模型中MAC子层的主要功能。参考答案:决定广播信道中信道分配协议的子层。三、程序题及设计题1、MSComm控件输入和读出数据均为VARIANT数据类型,考虑传输数据为纯文本,试编程实现从接受缓冲区中读取

13、字符(给出C+代码片段)。参考答案:VARIANT input;char charInput100;int counts = m_COMM.GetInBufferCount(); /m_COMM为MSComm控件对象If (counts>0) input = m_COMM.GetInput( );ASSERT(input.vt = VT_BSTR);CString strInput(input.bstrVal)strcpy(charInput, strInput);2、MSComm控件输入和读出数据均为VARIANT数据类型,考虑传输数据为二进制,试编程实现从接受缓冲区中读取二进制数据(

14、给出C+代码片段)。参考答案:VARIANT input;BYTE rxdata2048; COleSafeArray safeArray;input = m_COMM.GetInput( ); / 其中m_COMM为MSComm控件对象safeArray = input;long len = safeArray.GetOneDimSize( );for(long k=0; k<len; k+) safeArray.GetElement(&k, rxdata+k);3基于多线程技术、事件驱动方式实现串口双机数据通信程序,该程序即可作为发送方使用也可作为接受方使用。其中传输数据小于

15、64M;请求包、普通数据包、结束包及响应包帧格式表示如下。请求包:普通数据包:结束包:响应包:请设计事件处理函数和消息响应函数的流程图。参考答案:事件处理函数处理流程图消息响应函数处理流程图:其中发送状态1态:发送操作已经开始,请求包已经发出;2态:第一个普通数据包已经发出,等待接受方响应;3态:结束数据包已发送,等待接受方响应;接受0态:等待发送方请求包;1态:等待接受普通或结束数据包。四、程序阅读题1、HANDLE hCOM; hCOM = CreateFile (“ COM2”, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FI

16、LE_ATTRIBUTE_NORMAL, NULL); if ( hCOM != INVALID_HANDLE_VALUE) SetupComm(hCOM, 1024, 1024); DCB myDCB; GetCommState(hCOM, &myDCB); myDCB.BaudRate = CBR_19200; myDCB.fBinary = TRUE; myDCB.fParity = TRUE; myDCB.ByteSize = 8; myDCB.Parity = ODDPARITY; myDCB.StopBit = ONESTOPBIT; SetCommState(hCOM,

17、&myDCB); Else AfxMessageBox(“创建串口失败!”); 参考答案:HANDLE hCOM;/ 申明句柄;hCOM = CreateFile (“ COM2”,/ 使用串口2;GENERIC_READ|GENERIC_WRITE, / 读写方式,可以接受及发送;0,/ 不允许共享;NULL, / 默认安全属性;OPEN_EXISTING,/ 打开已有端口,不能创建);FILE_ATTRIBUTE_NORMAL,/ 非重叠操作;NULL);/ 无模板文件if ( hCOM != INVALID_HANDLE_VALUE) / 成功创建SetupComm(hCOM,

18、1024, 1024);/ 设置输入输出缓冲区大小DCB myDCB;/ 声明DCB数据结构GetCommState(hCOM, &myDCB);/ 获取默认DCB设置myDCB.BaudRate = CBR_19200;/ 波特率为19200myDCB.fBinary = TRUE;/ 二进制通信方式myDCB.fParity = TRUE;/ 允许奇偶校验myDCB.ByteSize = 8;/ 数据位为8myDCB.Parity = ODDPARITY;/ 奇校验myDCB.StopBit = ONESTOPBIT;/ 使用1位停止位SetCommState(hCOM, &

19、;myDCB);/ 设置通信参数。Else AfxMessageBox(“创建串口失败!”);/ 报错2. 设hCOM以重叠I/O方式打开,试解释说明下列代码的功能DWORD ThreadProcRead(LPVOID pParam) BYTEmyByte20; CStringmyStr;DWORDdwRes;DWORDdwRead;BOOLfRes;charmyChar10;Rol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);if(Rol.hEvent=NULL) return -1;if(ReadFile(hCom, &myByte,

20、 3, NULL, &Rol) / AfxMessageBox(“成功读出!”);else dwRes = WaitForSingleObject(Rol.hEvent, 5000);switch(dwRes) CASE WAIT_OBJECT_0:if(!GetOverlappedResult(hCom, &Rol,&dwRead, TRUE) / 操作失败 else / 操作成功完成break;CASE WAIT_TIMEOUT:/ 读操作失败break;default:/ 加入默认情况下的处理代码break;CloseHandle(Rol.hEvent); ret

21、urn 0;参考答案:在读线程函数中,首先应初始化重叠结构Rol的成员hEvent,将其设置为无信号状态。(当读操作完成或出现通信错误时,该变量会被自动设置为有信号状态。)接着使用ReadFile()函数发出读命令。若该函数返回TRUE,说明读操作已经完成,可以处理读取的数据。或该读函数返回FALSE,说明读操作未完成。此时使用WaitForSingleObject()函数等待读操作的结果。根据返回结构的不同,采取相应的处理代码。3. 解释说明相应变量及语句的含义。实现文件中定义如下全局变量:HANDLE hCom; HANDLE hWnd; DWORD dwThreadID; / (1) HANDLE hThreadEvent; / (2) DWORD ThreadProcEvent(LPVOID pParam); / (3) bool hEventRun; / (4) bool fStopMsg; / (5) OVERLAPPED Eol = 0; / (6) OVERLAPPED Wol= 0;OVERLAPPED Rol = 0;ThreadProcEvent定义如下:DWORD ThreadProcEvent(LPVOID pParam) DWORD dwEvtMask, dwRes;Eol.hEvent=CreateEvent(NULL, TRUE,

温馨提示

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

评论

0/150

提交评论