




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)控制工程復(fù)習(xí)題一、 填空題1. 根據(jù)計(jì)算機(jī)在控制中的典型應(yīng)用,可將計(jì)算機(jī)控制系統(tǒng)劃分為操作指導(dǎo)控制系統(tǒng)、直接數(shù)字控制系統(tǒng)、監(jiān)督控制系統(tǒng)、分布式控制系統(tǒng)和現(xiàn)場(chǎng)總線控制系統(tǒng)。2. 計(jì)算機(jī)控制系統(tǒng)由硬件和軟件兩部分組成。3. 假設(shè)比特率為B bps,一次諧波頻率為 B/8 Hz,普通語(yǔ)音級(jí)線路截至頻率為3000Hz,則允許通過(guò)最高諧波次數(shù)為 24000/B 。4. 數(shù)字通信系統(tǒng)主要技術(shù)指標(biāo)為傳輸速率、出錯(cuò)率、信道容量。5. 實(shí)現(xiàn)數(shù)據(jù)交換方法主要有電路交換、報(bào)文交換及分組交換。6. RS232串口標(biāo)準(zhǔn)傳輸方式為單端收發(fā),RS485標(biāo)準(zhǔn)傳輸方式為平衡傳輸方式。7. 常用的軟件調(diào)試方式有強(qiáng)行排錯(cuò)法、
2、回溯排錯(cuò)法、歸納排錯(cuò)法及演繹排錯(cuò)法。8. MSComm控件傳輸數(shù)據(jù)類(lèi)型可分為純文本數(shù)據(jù)和二進(jìn)制數(shù)據(jù)。9. 使用WinAPI編寫(xiě)串口通信程序讀寫(xiě)操作有同步和異步兩種方式。10. 基于WinAPI串口通信程序數(shù)據(jù)接受主要有查詢(xún)和事件驅(qū)動(dòng)兩種方式。11. Windows多線程編程方式主要有Win32API、標(biāo)準(zhǔn)C庫(kù)以及MFC類(lèi)庫(kù)三種方式。12. 在Windows多線程編程方式中,線程之間主要采用全局變量和自定義消息兩種方式進(jìn)行通信。13. Win32API提供臨界區(qū)、互斥對(duì)象、信號(hào)量及事件對(duì)象實(shí)現(xiàn)線程之間的同步。14. 控制網(wǎng)絡(luò)和信息網(wǎng)絡(luò)集成主要采用網(wǎng)絡(luò)互聯(lián)、動(dòng)態(tài)數(shù)據(jù)交換及數(shù)據(jù)庫(kù)技術(shù)。15. 軟件體
3、系結(jié)構(gòu)主要包括B/S、C/S及單機(jī)三種模式。二、 簡(jiǎn)單題1、試闡述網(wǎng)絡(luò)體系結(jié)構(gòu)、層次模型及協(xié)議之間的關(guān)系。參考答案:層次模型決定是網(wǎng)絡(luò)模型的分層數(shù)及每層的功能定義;協(xié)議描述對(duì)等層之間的數(shù)據(jù)傳輸方式;網(wǎng)絡(luò)體系結(jié)構(gòu)包括層次模型及協(xié)議兩個(gè)方面。2、試闡述協(xié)議、服務(wù)、接口之間的關(guān)系;參考答案:服務(wù)即功能;接口即調(diào)用方式;協(xié)議則是服務(wù)的實(shí)現(xiàn)方式。三者是緊密相關(guān)的。3、在計(jì)算機(jī)和單片機(jī)通信過(guò)程中,考慮下位機(jī)(單片機(jī))程序?yàn)闇y(cè)試程序,上位機(jī)(PC)程序?yàn)楸粶y(cè)試程序,試舉例說(shuō)明二者正常數(shù)據(jù)采集(通信)過(guò)程。參考答案:4、試說(shuō)明MSComm控件RThreshold屬性含義。參考答案:該屬性是一個(gè)閾值。當(dāng)接受緩沖
4、區(qū)中字符數(shù)達(dá)到閾值時(shí),MSComm控件產(chǎn)生OnComm事件,并且CommEvent屬性會(huì)設(shè)置為ComEvReceive,即接受事件。若設(shè)置為0時(shí),則不論接受緩沖區(qū)中有多少字符,都不會(huì)產(chǎn)生OnComm事件。5、試說(shuō)明MSComm控件SThreshold屬性含義。參考答案:該屬性是一個(gè)閾值。當(dāng)發(fā)送緩沖區(qū)中的字符數(shù)達(dá)到閾值時(shí),MSComm控件將產(chǎn)生OnComm事件,并且CommEvent屬性被設(shè)置為CommEvSend值。6、假設(shè)串口采用半雙工方式,使用一問(wèn)一答方式通信協(xié)議,接受數(shù)據(jù)長(zhǎng)度存在10字節(jié)、15字節(jié)和20字節(jié)三種可能性的情況下,簡(jiǎn)要說(shuō)明接受數(shù)據(jù)的實(shí)際處理方法。參考答案:置RThreshol
5、d為10,在OnComm事件中預(yù)讀10個(gè)字節(jié),判斷是否完整幀。若是完整幀,則設(shè)置InputLen為0或10,然后使用GetInput()讀取即可。否則設(shè)置InputLen為5,然后GetInput()讀取,與前10個(gè)字節(jié)合并一幀,判斷是否完整。如是非完整幀則設(shè)置InputLen為5,然后GetInput()讀取。7、假設(shè)串口采用半雙工方式,使用一問(wèn)一答方式通信協(xié)議,接受數(shù)據(jù)長(zhǎng)度長(zhǎng)度不確定的情況下,簡(jiǎn)要說(shuō)明接受數(shù)據(jù)實(shí)際處理方法:參考答案:數(shù)據(jù)通常包含有特定格式的數(shù)據(jù)頭,可以通過(guò)數(shù)據(jù)頭計(jì)算出整個(gè)數(shù)據(jù)幀的長(zhǎng)度。假定這些特定格式的數(shù)據(jù)頭長(zhǎng)度為10字節(jié)。按照下述步驟處理:設(shè)置RThreshold=10,
6、在OnComm事件中首先設(shè)置InputLen=10,使用GetInput()函數(shù)讀取緩沖區(qū),并根據(jù)讀取數(shù)據(jù)判斷整個(gè)數(shù)據(jù)幀長(zhǎng)度。然后讀取InBufferSize屬性值,并判斷該值是否為整個(gè)數(shù)據(jù)幀長(zhǎng)度與10之差;若不是,則反復(fù)讀取,直至該值為整個(gè)數(shù)據(jù)幀長(zhǎng)度與10之差。此時(shí)設(shè)置InputLen=0或InBufferSize值,并使用GetInput( )函數(shù)讀取緩沖區(qū),將讀取數(shù)據(jù)與前10個(gè)數(shù)據(jù)合并成一個(gè)完整的數(shù)據(jù)幀。8、簡(jiǎn)要說(shuō)明采用MSComm控件進(jìn)行串口數(shù)據(jù)采集程序設(shè)計(jì)步驟。參考答案:加載控件;初始化及打開(kāi)串口;事件處理;關(guān)閉串口;通信協(xié)議約定。9、簡(jiǎn)要說(shuō)明在基于對(duì)話框程序中使用MSComm控件的
7、操作步驟。參考答案:拖放控件圖標(biāo)至窗口,創(chuàng)建控件ID;在對(duì)話框頭文件申明CMSComm類(lèi)變量及引用控件類(lèi)頭文件;創(chuàng)建CMSComm實(shí)例;建立控件事件響應(yīng)代碼框架。10、簡(jiǎn)要說(shuō)明WinAPI串口通信同步查詢(xún)編程方式操作步驟。參考答案:CreateFile (非重疊方式); 初始化串口句柄; WriteFile(發(fā)送數(shù)據(jù)); ReadFile (讀取數(shù)據(jù));CloseFile (關(guān)閉串口)。11、簡(jiǎn)要說(shuō)明WinAPI串口通信異步重疊I/O查詢(xún)編程方式操作步驟。參考答案:定義全局變量;創(chuàng)建串口;發(fā)出讀寫(xiě)操作;讀寫(xiě)線程函數(shù)的建立; 關(guān)閉串口;12、簡(jiǎn)要說(shuō)明Windows編程中HANDLE(句柄)的概念
8、。參考答案:指針包含的是引用對(duì)象的內(nèi)存地址,而句柄則是由系統(tǒng)所管理的引用標(biāo)識(shí),該標(biāo)識(shí)可以被系統(tǒng)重新定位到一個(gè)內(nèi)存地址上。這種間接訪問(wèn)對(duì)象的模式增強(qiáng)了系統(tǒng)對(duì)引用對(duì)象的控制。13、簡(jiǎn)要說(shuō)明Windows多線程編程概念。參考答案:每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動(dòng)態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。線程是程序中一個(gè)單一的順序控制流程.在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完
9、成不同的工作,稱(chēng)為多線程。線程和進(jìn)程的區(qū)別在于子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約CPU時(shí)間,發(fā)揮利用,根據(jù)具體情況而定。線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和CPU。13、簡(jiǎn)要說(shuō)明Windows中線程和進(jìn)程的關(guān)系。參考答案:進(jìn)程:進(jìn)程是一個(gè)程序?qū)嵗?;進(jìn)程占據(jù)4GB地址空間,在該空間存放應(yīng)用程序執(zhí)行所需要的各種資源;Win32進(jìn)程沒(méi)有活力,是靜態(tài)的。 線程:線程是CPU調(diào)度計(jì)算任務(wù)的最小單位;Win32進(jìn)程創(chuàng)建時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)主線程;主線程可以創(chuàng)建其它線程(輔助線程)。14、簡(jiǎn)要說(shuō)明Windo
10、ws中終止線程的方法。參考答案:終止線程有三種方法:線程函數(shù)自然退出;內(nèi)部使用退出函數(shù)AfxEndThreadExitThread_endthread;外部使用TerminateThread函數(shù)。15、如何在MFC類(lèi)庫(kù)中使用自定義消息實(shí)現(xiàn)線程之間通信?參考答案:(1) 聲明自定義消息:在頭文件頂部加入消息名稱(chēng)聲明: const WM_THREADMSG = WM_USER+100; (2) 聲明消息響應(yīng)函數(shù):在頭文件 /AFX_MSG和“DECLARE_MESSAGE_MAP()”之間聲明消息響應(yīng)函數(shù): Afx_msg LONG OnThreadMsg(WPARAM wParam, LPARA
11、M, lParam)(3). 建立消息連接:在實(shí)現(xiàn)文件/AFX_MSG_MAP和 “END_MESSAGE_MAP()” 之間: ON_MESSAGE(WM_THREADMSG, OnThreadMsg)(4). 編寫(xiě)消息響應(yīng)函數(shù):在實(shí)現(xiàn)文件中,添加消息函數(shù)函數(shù)的實(shí)現(xiàn)體: LONG CMyClass:OnThreadMsg(WPARAM wParam, LPARAM lParam) / 加入響應(yīng)函數(shù)的具體處理代碼(5). 寄送自定義消息: BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);16、簡(jiǎn)要說(shuō)明OS
12、I/RM模型中物理層定義。參考答案:利用物理傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,以透明地傳送比特流。物理層實(shí)際上是設(shè)備之間的物理接口,它規(guī)定了機(jī)械特性、電氣特性、功能特性及過(guò)程特性。17、簡(jiǎn)要說(shuō)明OSI/RM模型中數(shù)據(jù)鏈路層的主要功能。參考答案:提供可靠的比特流傳輸服務(wù)。18、簡(jiǎn)要說(shuō)明TCP/IP層次模型。參考答案:應(yīng)用層、傳輸層(TCP/UDP)、互聯(lián)網(wǎng)層、主機(jī)至網(wǎng)絡(luò)層。19、簡(jiǎn)要說(shuō)明局域網(wǎng)參考模型中MAC子層的主要功能。參考答案:決定廣播信道中信道分配協(xié)議的子層。三、程序題及設(shè)計(jì)題1、MSComm控件輸入和讀出數(shù)據(jù)均為VARIANT數(shù)據(jù)類(lèi)型,考慮傳輸數(shù)據(jù)為純文本,試編程實(shí)現(xiàn)從接受緩沖區(qū)中讀取
13、字符(給出C+代碼片段)。參考答案:VARIANT input;char charInput100;int counts = m_COMM.GetInBufferCount(); /m_COMM為MSComm控件對(duì)象If (counts>0) input = m_COMM.GetInput( );ASSERT(input.vt = VT_BSTR);CString strInput(input.bstrVal)strcpy(charInput, strInput);2、MSComm控件輸入和讀出數(shù)據(jù)均為VARIANT數(shù)據(jù)類(lèi)型,考慮傳輸數(shù)據(jù)為二進(jìn)制,試編程實(shí)現(xiàn)從接受緩沖區(qū)中讀取二進(jìn)制數(shù)據(jù)(
14、給出C+代碼片段)。參考答案:VARIANT input;BYTE rxdata2048; COleSafeArray safeArray;input = m_COMM.GetInput( ); / 其中m_COMM為MSComm控件對(duì)象safeArray = input;long len = safeArray.GetOneDimSize( );for(long k=0; k<len; k+) safeArray.GetElement(&k, rxdata+k);3基于多線程技術(shù)、事件驅(qū)動(dòng)方式實(shí)現(xiàn)串口雙機(jī)數(shù)據(jù)通信程序,該程序即可作為發(fā)送方使用也可作為接受方使用。其中傳輸數(shù)據(jù)小于
15、64M;請(qǐng)求包、普通數(shù)據(jù)包、結(jié)束包及響應(yīng)包幀格式表示如下。請(qǐng)求包:普通數(shù)據(jù)包:結(jié)束包:響應(yīng)包:請(qǐng)?jiān)O(shè)計(jì)事件處理函數(shù)和消息響應(yīng)函數(shù)的流程圖。參考答案:事件處理函數(shù)處理流程圖消息響應(yīng)函數(shù)處理流程圖:其中發(fā)送狀態(tài)1態(tài):發(fā)送操作已經(jīng)開(kāi)始,請(qǐng)求包已經(jīng)發(fā)出;2態(tài):第一個(gè)普通數(shù)據(jù)包已經(jīng)發(fā)出,等待接受方響應(yīng);3態(tài):結(jié)束數(shù)據(jù)包已發(fā)送,等待接受方響應(yīng);接受0態(tài):等待發(fā)送方請(qǐng)求包;1態(tài):等待接受普通或結(jié)束數(shù)據(jù)包。四、程序閱讀題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(“創(chuàng)建串口失?。 保?; 參考答案:HANDLE hCOM;/ 申明句柄;hCOM = CreateFile (“ COM2”,/ 使用串口2;GENERIC_READ|GENERIC_WRITE, / 讀寫(xiě)方式,可以接受及發(fā)送;0,/ 不允許共享;NULL, / 默認(rèn)安全屬性;OPEN_EXISTING,/ 打開(kāi)已有端口,不能創(chuàng)建);FILE_ATTRIBUTE_NORMAL,/ 非重疊操作;NULL);/ 無(wú)模板文件if ( hCOM != INVALID_HANDLE_VALUE) / 成功創(chuàng)建SetupComm(hCOM,
18、1024, 1024);/ 設(shè)置輸入輸出緩沖區(qū)大小DCB myDCB;/ 聲明DCB數(shù)據(jù)結(jié)構(gòu)GetCommState(hCOM, &myDCB);/ 獲取默認(rèn)DCB設(shè)置myDCB.BaudRate = CBR_19200;/ 波特率為19200myDCB.fBinary = TRUE;/ 二進(jìn)制通信方式myDCB.fParity = TRUE;/ 允許奇偶校驗(yàn)myDCB.ByteSize = 8;/ 數(shù)據(jù)位為8myDCB.Parity = ODDPARITY;/ 奇校驗(yàn)myDCB.StopBit = ONESTOPBIT;/ 使用1位停止位SetCommState(hCOM, &
19、;myDCB);/ 設(shè)置通信參數(shù)。Else AfxMessageBox(“創(chuàng)建串口失?。 保?;/ 報(bào)錯(cuò)2. 設(shè)hCOM以重疊I/O方式打開(kāi),試解釋說(shuō)明下列代碼的功能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:/ 加入默認(rèn)情況下的處理代碼break;CloseHandle(Rol.hEvent); ret
21、urn 0;參考答案:在讀線程函數(shù)中,首先應(yīng)初始化重疊結(jié)構(gòu)Rol的成員hEvent,將其設(shè)置為無(wú)信號(hào)狀態(tài)。(當(dāng)讀操作完成或出現(xiàn)通信錯(cuò)誤時(shí),該變量會(huì)被自動(dòng)設(shè)置為有信號(hào)狀態(tài)。)接著使用ReadFile()函數(shù)發(fā)出讀命令。若該函數(shù)返回TRUE,說(shuō)明讀操作已經(jīng)完成,可以處理讀取的數(shù)據(jù)。或該讀函數(shù)返回FALSE,說(shuō)明讀操作未完成。此時(shí)使用WaitForSingleObject()函數(shù)等待讀操作的結(jié)果。根據(jù)返回結(jié)構(gòu)的不同,采取相應(yīng)的處理代碼。3. 解釋說(shuō)明相應(yīng)變量及語(yǔ)句的含義。實(shí)現(xiàn)文件中定義如下全局變量: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【復(fù)習(xí)大串講】【中職專(zhuān)用】高二語(yǔ)文上學(xué)期期末應(yīng)用文寫(xiě)作專(zhuān)題(職業(yè)模塊)(原卷版)
- 分租店面裝修合同范本
- 農(nóng)機(jī)課題申報(bào)書(shū)怎么寫(xiě)
- 專(zhuān)用預(yù)埋件銷(xiāo)售合同范本
- 友誼合同范本
- 產(chǎn)業(yè)用工合同范本
- 前期物業(yè)托管合同范本
- 豐沃達(dá)采購(gòu)合同范本
- 農(nóng)場(chǎng)民宿到超市合同范本
- 醫(yī)院物業(yè)服務(wù)合同范本格式
- 氣血津液(中醫(yī)理論)
- 《環(huán)境與資源保護(hù)法(第5版)》全套教學(xué)課件
- 2024年2型糖尿病中醫(yī)防治指南解讀課件
- 2024年遼寧省中考物理試題
- 2024年南京信息職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- VDA6.3-2023過(guò)程審核檢查表
- 2024年湖南電氣職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 2024-汽車(chē)噴漆外包協(xié)議
- 大班語(yǔ)言活動(dòng):我驕傲-我是中國(guó)娃
- CJJ 82-2012 園林綠化工程施工及驗(yàn)收規(guī)范
- 數(shù)據(jù)庫(kù)原理及應(yīng)用(第3版)
評(píng)論
0/150
提交評(píng)論