畢業(yè)設(shè)計(jì)(論文)-嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)-嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)-嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)-嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)-嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄TOC\o"1-3"\h\u5478一、設(shè)計(jì)要求 嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究一、設(shè)計(jì)要求本設(shè)計(jì)是基于嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中的應(yīng)用研究,需要完成系統(tǒng)的軟件和硬件設(shè)計(jì),其具體設(shè)計(jì)內(nèi)容如下:(1)控制器硬件功能及原理設(shè)計(jì)。主要針對(duì)船舶機(jī)艙中大多數(shù)機(jī)電設(shè)備的控制特點(diǎn)和發(fā)展趨勢(shì),分析嵌入式系統(tǒng)的功能需求,選擇EP9315片上系統(tǒng)處理器,進(jìn)行外圍接口電路的設(shè)計(jì)。設(shè)計(jì)的嵌入式系統(tǒng)包括以太網(wǎng)通信接口、CAN總線通信接口、RS232/485通信接口、NANDFlash數(shù)據(jù)存儲(chǔ)以及LCD和觸摸屏接口等多種功能。(2)以船舶監(jiān)控系統(tǒng)為對(duì)象,分析嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)中應(yīng)用的架構(gòu)和特點(diǎn)。(3)建立基于嵌入式系統(tǒng)的船舶監(jiān)控系統(tǒng)試驗(yàn)測(cè)試平臺(tái),選擇監(jiān)控系統(tǒng)的一個(gè)控制節(jié)點(diǎn),利用EmbeddedVisualC++為開(kāi)發(fā)環(huán)境,介紹了WindowsCE平臺(tái)下通過(guò)串口通信編程控制I/O模塊實(shí)現(xiàn)數(shù)據(jù)采集和信號(hào)輸出、以及基于TCP/IP協(xié)議的以太網(wǎng)通訊程序的具體設(shè)計(jì)方法。二、設(shè)計(jì)的作用與目的我國(guó)是世界造船大國(guó),造船產(chǎn)量位于世界第一方陣。但同時(shí),我國(guó)船舶配套業(yè)的本土化率較低,國(guó)產(chǎn)化比例甚至不足20%。特別是在一些中高檔的船舶配套設(shè)備及系統(tǒng)方面,如主機(jī)遙控系統(tǒng)、機(jī)艙監(jiān)測(cè)報(bào)警系統(tǒng)、自動(dòng)化電站系統(tǒng)等機(jī)艙自動(dòng)化裝備均為國(guó)外設(shè)備。因此,探索和跟蹤國(guó)外船舶自動(dòng)化領(lǐng)域的最新發(fā)展趨勢(shì),應(yīng)用新技術(shù)和手段來(lái)提高我國(guó)中高檔船舶配套設(shè)備的自主開(kāi)發(fā)能力具有重要的現(xiàn)實(shí)意義。本文基于一種片上系統(tǒng)處理器EP9315,和WindowsCE嵌入式操作系統(tǒng)平臺(tái),設(shè)計(jì)了應(yīng)用于機(jī)艙監(jiān)控系統(tǒng)的核心裝置——嵌入式系統(tǒng),并以船舶為對(duì)象,提出了基于嵌入式系統(tǒng)的船舶監(jiān)控系統(tǒng)的架構(gòu),并在搭建的試驗(yàn)平臺(tái)上進(jìn)行了相關(guān)的應(yīng)用程序設(shè)計(jì)。系統(tǒng)控制方案論證船舶監(jiān)控系統(tǒng)中的核心控制器可以由單片機(jī)、PLC、嵌入式處理器構(gòu)成,本設(shè)計(jì)主要對(duì)單片機(jī)控制器和嵌入式處理器構(gòu)成的系統(tǒng)做了一定的論述,最終提出來(lái)由嵌入式處理器構(gòu)成的系統(tǒng)的基本架構(gòu)模型。3.1單片機(jī)控制單片機(jī)的使用開(kāi)始于20世紀(jì)80年代。單片機(jī)控制技術(shù)已經(jīng)滲透到包括船舶自動(dòng)控制系統(tǒng)在內(nèi)的各個(gè)領(lǐng)域,給工業(yè)生產(chǎn)和管理帶來(lái)極大的方便。以FCS結(jié)構(gòu)的控制系統(tǒng)為例,設(shè)備層的現(xiàn)場(chǎng)控制器可基于單片機(jī)進(jìn)行開(kāi)發(fā)。但用單片機(jī)作為下位機(jī),由于采用了大規(guī)模集成電路和分立元件組成模擬量和開(kāi)關(guān)量采集電路,使得這種實(shí)現(xiàn)方法的軟硬件開(kāi)發(fā)工作量十分巨大,而且通過(guò)船級(jí)社認(rèn)證的過(guò)程十分漫長(zhǎng)。另外,隨著船舶自動(dòng)化水平的進(jìn)一步發(fā)展,現(xiàn)場(chǎng)的控制器需要更強(qiáng)的通信功能及數(shù)據(jù)處理和計(jì)算能力,甚至需要豐富的圖形界面等。采用低端單片機(jī)進(jìn)行的開(kāi)發(fā)工作將變得越來(lái)越復(fù)雜、龐大,甚至無(wú)法實(shí)現(xiàn),從而越來(lái)越不能滿足船舶自動(dòng)化系統(tǒng)的需求。3.2嵌入式系統(tǒng)控制嵌入式系統(tǒng)被定義為:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)涵蓋了硬件和軟件兩個(gè)層面,建立在一個(gè)高性能的微處理器(相對(duì)于單片機(jī))的硬件基礎(chǔ)上的,以一個(gè)成熟的實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)為軟件平臺(tái)。其軟硬件結(jié)構(gòu)如圖3.1所示。嵌入式系統(tǒng)軟硬件是可裁減的,并具有軟硬件一體化、低功耗、體積小、可靠性高、技術(shù)密集等特點(diǎn)。一個(gè)典型的嵌入式系統(tǒng)是由以下幾個(gè)部分組成的:硬件平臺(tái);板級(jí)支持包(BSP,BoardSupportPackage);實(shí)時(shí)操作系統(tǒng)(RTOS,RealTimeOperatingSystem);應(yīng)用程序。硬件平臺(tái)主要包括嵌入式微處理器和控制所需要的相關(guān)外設(shè),微處理器是嵌入式系統(tǒng)的硬件核心。嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,它大大提高了嵌入式系統(tǒng)開(kāi)發(fā)的效率,減少了系統(tǒng)開(kāi)發(fā)的工作量,而且操作系統(tǒng)使得應(yīng)用程序具有了較好的可移植性。圖3.1嵌入式系統(tǒng)的軟/硬件框架目前,嵌入式系統(tǒng)技術(shù)在船舶自動(dòng)控制系統(tǒng)中的應(yīng)用尚處于研究發(fā)展階段,但可以預(yù)見(jiàn),嵌入式系統(tǒng)將在船舶自動(dòng)化系統(tǒng)中的到廣泛的應(yīng)用。3.3嵌入式船舶監(jiān)控系統(tǒng)架構(gòu)基于嵌入式系統(tǒng)的網(wǎng)絡(luò)型船舶監(jiān)制系統(tǒng)架構(gòu)如圖3.2所示。圖3.2嵌入式船舶監(jiān)控系統(tǒng)架構(gòu)系統(tǒng)除了包括發(fā)電機(jī)組、調(diào)速裝置、同步裝置、功率調(diào)節(jié)裝置、卸載裝置等船舶的基本組成以及各類(lèi)傳感器、執(zhí)行器外,還包括以下的控制及通信網(wǎng)絡(luò)部分:1)嵌入式系統(tǒng)2)I/O模塊3)控制層通信網(wǎng)絡(luò)4)控制層人機(jī)界面5)數(shù)據(jù)庫(kù)6)監(jiān)控瀏覽器3.4嵌入式系統(tǒng)特點(diǎn)1)更為精簡(jiǎn)的硬件的結(jié)構(gòu)嵌入式系統(tǒng)功能強(qiáng)大,軟件功能豐富,傳統(tǒng)控制系統(tǒng)中的很多必須由專(zhuān)用的硬件實(shí)現(xiàn)的功能,在新控制方式下可以精簡(jiǎn)硬件結(jié)構(gòu),而主要通過(guò)軟件實(shí)現(xiàn)。在軟件上,可以通過(guò)WindowsCE操作系統(tǒng)優(yōu)先級(jí)的設(shè)置來(lái)實(shí)現(xiàn)對(duì)重要操作實(shí)現(xiàn)高實(shí)時(shí)性的響應(yīng)。2)數(shù)字化、網(wǎng)絡(luò)化的管控一體化系統(tǒng)現(xiàn)場(chǎng)控制節(jié)點(diǎn)的控制器使得電站監(jiān)控系統(tǒng)形成數(shù)字化管控系統(tǒng)。高速的工業(yè)以太網(wǎng)通信解決數(shù)據(jù)傳輸過(guò)程中的出現(xiàn)“瓶頸”,實(shí)現(xiàn)從設(shè)備層到管理層數(shù)據(jù)的無(wú)縫連接。并且系統(tǒng)可以很方便的接入整個(gè)機(jī)艙乃整個(gè)船舶的綜合信息管理系統(tǒng)中。3)控制器通用、標(biāo)準(zhǔn)由于I/O模塊和控制器模塊單獨(dú)設(shè)計(jì),同時(shí)同一條船上的不同控制對(duì)象的控制網(wǎng)絡(luò)采用同一標(biāo)準(zhǔn),就可使控制器在硬件上具有通用性,因而在實(shí)際應(yīng)用中可大大減少船舶電氣產(chǎn)品備件,針對(duì)不同的控制對(duì)象只需要將應(yīng)用程序下載到控制器上運(yùn)行即可,即備件形式為“軟件備件”。4)可靠性高控制層的嵌入式系統(tǒng)采用大容量Flash進(jìn)行操作系統(tǒng)啟動(dòng)及數(shù)據(jù)存儲(chǔ),避免了采用傳統(tǒng)采用的硬盤(pán)存儲(chǔ)方式,適合船舶這一特殊環(huán)境。此外,由于硬件結(jié)構(gòu)的精簡(jiǎn),因而大大減少數(shù)據(jù)線布設(shè)。過(guò)去每采集一個(gè)變量到集控室、輪機(jī)長(zhǎng)室、駕駛室都需要平行兩條線,數(shù)據(jù)多達(dá)數(shù)千根,現(xiàn)在只要一根網(wǎng)絡(luò)線就可以,安全性大大提高。同時(shí),系統(tǒng)在硬件上的簡(jiǎn)單化,也使得系統(tǒng)安裝調(diào)試、維護(hù)檢修變得簡(jiǎn)單船舶監(jiān)控系統(tǒng)硬件設(shè)計(jì)船舶監(jiān)控系統(tǒng)硬件設(shè)計(jì)包括嵌入式系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)與各模塊硬件設(shè)計(jì),這是系統(tǒng)設(shè)計(jì)的核心部分。4.1嵌入式系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)的嵌入式系統(tǒng)結(jié)構(gòu)組成如圖4.1所示,主要包括:1)微處理器嵌入式系統(tǒng)的核心。2)數(shù)據(jù)存儲(chǔ)電路包括SDRAM和Flash。SDRAM是程序的運(yùn)行空間;Flash存儲(chǔ)器主要用于存放啟動(dòng)代碼、系統(tǒng)內(nèi)核、應(yīng)用程序以及設(shè)備運(yùn)行的歷史數(shù)據(jù)。3)外部總線接口包含RS232、RS485、CAN、工業(yè)以太網(wǎng)等接口。RS232用作調(diào)試串口,RS485及CAN可用來(lái)連接I/O模塊;CAN及工業(yè)以太網(wǎng)可作為現(xiàn)場(chǎng)控制總線。圖4.1控制器結(jié)構(gòu)框圖4)內(nèi)部總線接口PC104總線??蛇B接I/O模塊;也可進(jìn)行其他功能模塊擴(kuò)展。5)JTAG接口調(diào)試接口,支持SDT2.51,ADS1.2等軟件調(diào)試。6)人機(jī)交互接口LCD+觸摸屏。7)其它輔助功能電路等部分包括電源、復(fù)位、報(bào)警、指示、保護(hù)等電路。4.2系統(tǒng)各模塊硬件電路設(shè)計(jì)與控制器接口的電路包括Flash、SDRAM、JTAG調(diào)試接口、以太網(wǎng)接口、RS232接口、RS485接口、CAN總線接口、LCD接口、觸摸屏接口、CF卡擴(kuò)展接口、PC104總線,以及復(fù)位、電源、指示、報(bào)警等其他輔助電路。以下主要介紹FLASH、以太網(wǎng)接口、RS232接口、RS485接口以及CAN接口部分的電路原理設(shè)計(jì)。4.2.1Flash存儲(chǔ)電路設(shè)計(jì)設(shè)計(jì)采用三星公司生產(chǎn)的超大容量的NANDFlash存儲(chǔ)器K9F2G08UOM,其存儲(chǔ)容量可達(dá)256M。雖然K9F2GO8UOM的容量和尋址范圍遠(yuǎn)遠(yuǎn)超過(guò)常見(jiàn)單片機(jī)的容量和尋址范圍,但由于芯片上的寫(xiě)控制器能自動(dòng)控制所有編程和擦除功能,提供必要的重復(fù)脈沖、內(nèi)部確認(rèn)和數(shù)據(jù)空間,而且只通過(guò)I/O接口接收單片機(jī)的命令和數(shù)據(jù)而不需要地址線,因此實(shí)際操作起來(lái)非常方便。另外芯片是通過(guò)“與非”單元結(jié)構(gòu)增大容量,所以沒(méi)有因此而削弱自身性能。K9F2G08UOM由存儲(chǔ)陣列、輸入輸出緩沖及鎖存、命令寄存器、地址鎖存與譯碼、控制邏輯及高電壓發(fā)生器等五部分組成,有效引腳為17個(gè),其功能如下:CLE:命令允許(鎖存),平時(shí)為低電平,當(dāng)為高電平時(shí),在WE的上升沿將I/O端口上的命令信息輸入并鎖存到命令寄存器。ALE:地址鎖存,平時(shí)為低電平,當(dāng)ALE為高電平時(shí),在WE的上升沿將I/O端口上的地址信息輸入并鎖存到地址寄存器。/CE:片選,低電平有效,用于器件的選擇控制,當(dāng)變?yōu)楦唠娖綍r(shí),器件返回到備用狀態(tài)。/WE:寫(xiě)控制,平時(shí)為高電平,在WE的上升沿,將I/O端口上的命令、地址和數(shù)據(jù)信息分別輸入到相應(yīng)寄存器。/RE:讀控制,平時(shí)為高電平,在它的下降沿tREA時(shí)間后,I/O端口上的輸出數(shù)據(jù)有效,同時(shí)內(nèi)部列地址自動(dòng)加1。I/O端口:用于命令、地址和數(shù)據(jù)的輸入及讀操作時(shí)的數(shù)據(jù)輸出。當(dāng)芯片未選中時(shí),I/O端口為高阻態(tài)。/WP:寫(xiě)保護(hù),低電平有效。當(dāng)它為低電平時(shí),內(nèi)部的高電壓發(fā)生器將停止工作,實(shí)現(xiàn)禁止寫(xiě)和擦除操作。:當(dāng)前器件的工作狀態(tài)。當(dāng)它為低電平時(shí),表示正在進(jìn)行寫(xiě)、擦除以及隨機(jī)讀操作。當(dāng)它為高電平時(shí),表示這些操作已經(jīng)完成。K9F2G08UOM與EP9315的接口電路如圖4.2所示:圖4.2Flash存儲(chǔ)電路4.2.2RS232接口電路設(shè)計(jì)EP9315自帶有3個(gè)個(gè)UART接口,通過(guò)TTL到RS232的電平轉(zhuǎn)換,即可實(shí)現(xiàn)RS232接口。RS232的實(shí)現(xiàn)較為簡(jiǎn)單,采用MAXIM公司的MAX232,完成MAX232電平轉(zhuǎn)換芯片即可實(shí)現(xiàn)。由于本設(shè)計(jì)中的RS232僅需要完成最基本的串行通信功能,因此只需要RXD、TXD和GND即可,但由于RS-232-C標(biāo)準(zhǔn)所定義的高、低電平信號(hào)微處理器的LVTTL電路所定義的高、低電平信號(hào)不相同,因此,兩者間必須經(jīng)過(guò)信號(hào)電平的轉(zhuǎn)換才能進(jìn)行通信。MAX232外圍需要4個(gè)電解電容C1、C2、C3、C4,是內(nèi)部電源轉(zhuǎn)換所需電容,其取值均為0.1Uf,MAX232的引腳T1IN、T2IN、R1OUT、R2OUT為接TTL/CMOS電平的引腳。引腳T1OUT、T2OUT、R1IN、R2IN為接RS-232C電平的引腳。MAX232與EP9315的接口如圖4.3所示。選用其中一路發(fā)送/接收,R1OUT接EP9315的RXD,T1IN接EP9315的TXD,T1OuT、R1IN,在加一個(gè)地線GND即實(shí)現(xiàn)RS232通信。因?yàn)镸AX232具有驅(qū)動(dòng)能力,所以不需要外加驅(qū)動(dòng)電路。圖4.3RS232接口電路圖4.2.3RS-485接口電路設(shè)計(jì)RS485的實(shí)現(xiàn)通過(guò)對(duì)EP9315的UART接口進(jìn)行信號(hào)轉(zhuǎn)換,由MAX485芯片完成。MAX485是用于支持RS485/RS422通信的低功耗收發(fā)器,內(nèi)含一個(gè)獨(dú)立的驅(qū)動(dòng)器和接收器,支持半雙工收發(fā)。采用MAX485芯片時(shí),RS485所支持的網(wǎng)絡(luò)節(jié)點(diǎn)為32個(gè)。如需要更多的節(jié)點(diǎn)容量采用MAX487,其引腳與接口方法與MAX485完全相同,但可支持的網(wǎng)絡(luò)接點(diǎn)達(dá)128個(gè)。EP9315與RS485接口電路如圖4.4所示。圖4.4RS485接口電路圖4.2.4CAN總線接口電路設(shè)計(jì)CAN(控制器局域網(wǎng))總線采用了OSI中的三層網(wǎng)絡(luò)結(jié)構(gòu)——物理層、數(shù)據(jù)鏈路層和應(yīng)用層。當(dāng)前流行的應(yīng)用層協(xié)議主要有DeviceNet和CANOPEN兩種協(xié)議。EP9315自帶SPI(SSP)接口,它和MCP2515的四根SPI口連接,MCP2515的/CS和EP9315的SFRMI連接,MCP2515的SO和EP9315的SSPRX1連接,MCP2515的/INT和EP9315的INT1連接。其接口電路如圖4.5所示:圖4.5CAN接口電路4.2.5以太網(wǎng)接口電路設(shè)計(jì)EP9315微處理器內(nèi)部集成了一個(gè)高性能1/10/100Mbps以太網(wǎng)媒體訪問(wèn)控制器(MAC),因此在控制器硬件開(kāi)發(fā)時(shí)只需要外接物理層接口芯片,即可實(shí)現(xiàn)以太網(wǎng)接入。EP9315微處理器內(nèi)嵌的以太網(wǎng)控制器是AHB與MII之間的邏輯接口,包含本地存儲(chǔ)器、DMA控制器,并支持帶流控的全雙工操作。以太網(wǎng)控制器的結(jié)構(gòu)如圖4.6所示。圖4.6以太網(wǎng)控制器結(jié)構(gòu)圖圖4.7RJ45的連接電路圖設(shè)計(jì)采用J0026D21B網(wǎng)絡(luò)變壓器,適用于10/100Base-tNIC參數(shù)要求,符合IEEE802.3ANSIX3263要求,OCL電感(100KHz,0.1V,8mA)為350uHMIN,隔離電壓為1500VrmsMin。RJ45的連接電路如圖4.7所示。五、船舶監(jiān)控系統(tǒng)軟件設(shè)計(jì)船舶監(jiān)控系統(tǒng)軟件設(shè)計(jì)主要是針對(duì)串口通訊的數(shù)據(jù)采集和信號(hào)輸出程序設(shè)計(jì),其中包括I/O模塊串口控制原理、WindowsCE平臺(tái)下串口通信的實(shí)現(xiàn)、基于串口通信的數(shù)據(jù)采集及輸出控制的流程。5.1I/O模塊串口控制原理測(cè)試系統(tǒng)所用的I/O模塊都是通過(guò)RS485總線連接到控制器的。輸入模塊將發(fā)電機(jī)的電壓、電流、功率、功率因素,以及電動(dòng)機(jī)的頻率等信號(hào)傳遞到控制器后進(jìn)行數(shù)據(jù)處理,輸出模塊負(fù)責(zé)將控制器的指令(如起??刂泼?,頻率調(diào)節(jié)命令)傳遞到繼電器或變頻器。采用RS485總線進(jìn)行I/O模塊控制的方式在工業(yè)控制系統(tǒng)中是常見(jiàn)的。測(cè)試系統(tǒng)采用的I/O模塊的控制都是通過(guò)接受ASCⅡ碼命令來(lái)響應(yīng)的。因此,要對(duì)I/O模塊進(jìn)行控制,必須通過(guò)串口通信編程,對(duì)模塊的串口進(jìn)行讀寫(xiě)操作。具體的實(shí)現(xiàn)方法就是:通過(guò)讀串口操作進(jìn)行數(shù)據(jù)采集控制,通過(guò)寫(xiě)串口操作進(jìn)行輸出控制。在讀串口之前要通過(guò)寫(xiě)串口操作發(fā)送采樣命令,寫(xiě)串口成功后要通過(guò)讀串口接收模塊應(yīng)答信號(hào)。RS485為半雙工通訊方式,每個(gè)I/O模塊都可設(shè)置互不相同的地址,并聯(lián)在RS485總線上。在對(duì)I/O模塊進(jìn)行控制時(shí),只需要按照I/O模塊ASCⅡ碼響應(yīng)的協(xié)議對(duì)串口進(jìn)行命令寫(xiě)入,即可獲得模塊按照要求響應(yīng)。ARK24017控制示例如下:串口發(fā)送命令:“$014”模塊響應(yīng):“!10F0000”功能:成功實(shí)現(xiàn)對(duì)模塊(地址為01)發(fā)送同步采樣命令。此時(shí)串口即可通過(guò)讀串口操作接收相應(yīng)模塊的信號(hào)輸入。ARK24063D開(kāi)關(guān)量輸出模塊控制示例:串口發(fā)送指令:“#010003”模塊響應(yīng):“<”功能:實(shí)現(xiàn)模塊(地址為01)0和1兩個(gè)通道的開(kāi)關(guān)信號(hào)輸出。因此,實(shí)現(xiàn)WindowsCE控制器控制I/O模塊進(jìn)行數(shù)據(jù)采集和控制信號(hào)輸出,首先需要實(shí)現(xiàn)控制器和I/O之間串口通信,另外還要對(duì)采集進(jìn)來(lái)的參數(shù)信號(hào)進(jìn)行數(shù)據(jù)處理。5.2WindowsCE平臺(tái)下串口通信的實(shí)現(xiàn)應(yīng)用程序和串行端口的溝通主要通過(guò)串行裝置驅(qū)動(dòng)程序(serialdevicedriver)完成。串行設(shè)備驅(qū)動(dòng)程序?qū)儆诹鹘涌隍?qū)動(dòng)程序(StreamInterfaceDriver)的一種。而應(yīng)用程序主要是通過(guò)操作系統(tǒng)的文件系統(tǒng)的應(yīng)用程序開(kāi)發(fā)接口(FileSystemAPI)來(lái)存取串行設(shè)備驅(qū)動(dòng)程序,以傳送、接收或控制串行設(shè)備。WindowsCE支持大部分的WindowsXP所提供的串行通信接口函數(shù),如表5.1所示:WindowsCE下串口通信編程的實(shí)現(xiàn)方法與桌面操作系統(tǒng)下也基本相同。主要包括串行端口打開(kāi)與關(guān)閉、配置端口和配置超時(shí)值、串行端口讀寫(xiě)、多線程處理等部分。(1)打開(kāi)和關(guān)閉串行端口調(diào)用CreateFile打開(kāi)串行口,函數(shù)原型如下:HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDispostion,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);WindowsCE只支持非重疊I/O,所以參數(shù)dwFlagsAndAttributes必須為0。第3個(gè)參數(shù)dwShareMode也必須為0,通信端口不能像文件一樣被共享。這個(gè)函數(shù)的返回值是已打開(kāi)的串行端口的句柄或者是INVALID_HANDLE_VALUE。以讀寫(xiě)方式打開(kāi)第1個(gè)串口程序如下:hSerial=CreateFile(L"COM1:",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);表5.1WindowsCE常用的接口函數(shù)名稱功能描述CreatFile打開(kāi)串行端口GetCommState讀取串行端口的狀態(tài)并將讀取結(jié)果填入設(shè)備控制區(qū)塊(device-controlblock)結(jié)構(gòu)——DCBstructureSetCommState根據(jù)DCB結(jié)構(gòu)的內(nèi)容設(shè)定調(diào)校串行通信端口GetCommTimeouts讀取串行通信端口的讀寫(xiě)逾時(shí)參數(shù)(time-outparameters)SetCommTimeouts設(shè)定串行通信端口的讀寫(xiě)逾時(shí)參數(shù)(time-outparameters)WriteFile向串行通信端口寫(xiě)入數(shù)據(jù)ReadFile從串行通信端口讀取數(shù)據(jù)SetCommMask設(shè)定通信裝置的事件屏蔽(eventmask)以等待事件的發(fā)生GetCommMask讀取一個(gè)通信裝置的事件屏蔽(eventmask)WaitCommEvent等待通信裝置的事件發(fā)生,所等待的事件在事件屏蔽(eventmask)中設(shè)定EscapeCommFunction設(shè)定通信裝置去完成一個(gè)延伸功能。常用來(lái)將串行通信端口變成紅外模式ClearCommBreak對(duì)通信裝置重新存入字符轉(zhuǎn)換(chractertransmission),并置入轉(zhuǎn)換行(transmissionline)在非中斷狀態(tài)(non-breakstate)ClearCommError讀取通信裝置的錯(cuò)誤信息和當(dāng)前狀態(tài)CloseHandle關(guān)閉端口調(diào)用CloseHandle(hSerial)可以關(guān)閉串行口,函數(shù)原型如下:BOOLCloseHandle(HANDLEhObject);(2)配置端口和配置超時(shí)值配置串行口主要是用DCB結(jié)構(gòu)配置端口設(shè)置,包括波特率、停止位、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)位、流量控制等,以及配置超時(shí)值。在打開(kāi)串行端口后,用GetCommState函數(shù)獲得當(dāng)前打開(kāi)串口配置,然后根據(jù)需要修改DCB成員,最后用SetCommState函數(shù)設(shè)置新的串口配置,方法如下:DCBPortDCB;//創(chuàng)建DCB變量Port.DCB.DCBlength=sizeof(DCB);GetCommState(hSerial,&PortDCB);//獲取當(dāng)前串口配置修改DCB成員PortDCB.BaudRate=9600;//波特率PortDCB.Parity=NOPARITY;//校驗(yàn)位PortDCB.StopBits=ONESTOPBIT;//停止位PortDCB.ByteSize=8;數(shù)據(jù)位SetCommState(hSerial,&PortDCB);//設(shè)置新的串口配置串行端口必須配置超時(shí)值,否則程序有可能陷入一個(gè)循環(huán)等待來(lái)自串口的字符。配置超時(shí)值先用GetCommTimeouts函數(shù)獲得當(dāng)前串口的超時(shí)值,然后可修改COMMTIMEOUT成員,最后用SetCommTimeouts函數(shù)設(shè)定超時(shí)值,方法如下:COMMTIMEOUTSCommTimeouts;GetCommTimeouts(m_hSerial,&CommTimeouts);CommTimeouts.ReadIntervalTimeout=MAXDWORD;CommTimeouts.ReadTotalTimeoutMultiplier=1;CommTimeouts.ReadTotalTimeoutConstant=100;CommTimeouts.WriteTotalTimeoutMultiplier=0;CommTimeouts.WriteTotalTimeoutConstant=0;(3)串行端口讀寫(xiě)調(diào)用ReadFile和WriteFile函數(shù)讀寫(xiě)串行口,函數(shù)原型如下:BOOLReadFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToRead,LPDWORDlpNumberOfBytesRead,LPOVERLAPPEDlpOverlapped);BOOLWriteFile(HANDLEhFile,LPCVOIDlpBuffer,DWORDnNumberOfBytesToWrite,LPDWORDlpNumberOfBytesWritten,LPOVERLAPPEDlpOverlapped);讀串行端口程序如下(假設(shè)已經(jīng)成功的打開(kāi)了串行端口):intiCounter;BYTEByte;DWORDdwBytes;charRecBuf[n];//設(shè)定緩沖區(qū)大小iCounter=ReadFile(hSerial,&Byte,1,&dwBytes,NULL);ReadFile函數(shù)調(diào)用成功時(shí),Byte將讀入一個(gè)字節(jié),dwBytes被設(shè)置為讀取字節(jié)的數(shù)量。寫(xiě)串行端口調(diào)用過(guò)程如下:WriteFile(hSerial,//句柄&Byte,//數(shù)據(jù)緩沖區(qū)地址nByte,//數(shù)據(jù)大小&dwNumBytes,//返回發(fā)送出去的字節(jié)數(shù)NULL//不支持重疊);除了WindowsCE不支持Windows下常用的串行通信重疊I/O方式(OVERLAPPED)外,還需要注意的是,WindowsCE是一個(gè)基于Unicode的操作系統(tǒng),并且WindowsCE不支持直接對(duì)串行端口的寄存器進(jìn)行編程。5.3基于串口通信的數(shù)據(jù)采集及輸出控制的流程基于串口通信的數(shù)據(jù)采集及輸出控制的流程如圖5.2所示:在應(yīng)用中,也可以基于以上函數(shù)及操作方法,根據(jù)實(shí)際的需求設(shè)計(jì)WindowsCE的串口通信類(lèi),在類(lèi)中將串口的配置、線程處理、讀寫(xiě)操作都進(jìn)行設(shè)置或處理,留有更為簡(jiǎn)單易用的接口函數(shù)以供調(diào)用。而且,在進(jìn)行多串口操作時(shí),即可用串口類(lèi)定義不同的對(duì)象,每個(gè)串行端口對(duì)應(yīng)一個(gè)對(duì)象,這樣在不同的串口調(diào)用功能相同的接口函數(shù)時(shí),只需要指明是屬于哪個(gè)對(duì)象即可,由此可大大減少代碼用量并降低程序的開(kāi)發(fā)難度。圖5.2基于串口通信的數(shù)據(jù)采集及輸出的流程系統(tǒng)仿真與調(diào)試基于嵌入式系統(tǒng)的船舶監(jiān)控系統(tǒng)仿真與調(diào)試是在PlatformBuilder和TCP網(wǎng)絡(luò)通信測(cè)試工具的平臺(tái)下完成的。6.1PlatformBuilder軟件平臺(tái)PlatformBuilder是微軟提供給WindowsCE開(kāi)發(fā)人員基于WindowsCE平臺(tái)下嵌入式操作系統(tǒng)定制的集成開(kāi)發(fā)環(huán)境。它提供了所有進(jìn)行設(shè)計(jì)、創(chuàng)建、編譯、測(cè)試和調(diào)試WindowsCE操作系統(tǒng)平臺(tái)的工具。它運(yùn)行在桌面Windows下,開(kāi)發(fā)人員可以通過(guò)交互式的環(huán)境來(lái)設(shè)計(jì)和定制內(nèi)核、選擇系統(tǒng)特性,然后進(jìn)行編譯和調(diào)試。利用PlatformBuilder5.0進(jìn)行BSP開(kāi)發(fā)及內(nèi)核定制等系統(tǒng)開(kāi)發(fā)。主要利用的特性包括平臺(tái)及BSP開(kāi)發(fā)向?qū)?、基礎(chǔ)配置、特性目錄、測(cè)試工具、內(nèi)核調(diào)試器、仿真器等,此外還利用“導(dǎo)出SDK向?qū)А边M(jìn)行SDK定制,以方便針對(duì)特定的硬件進(jìn)行應(yīng)用程序開(kāi)發(fā)。嵌入式系統(tǒng)的應(yīng)用程序指的是運(yùn)行在嵌入式操作系統(tǒng)之上的軟件,由于嵌入式的應(yīng)用軟件不再針對(duì)常規(guī)的操作系統(tǒng)進(jìn)行開(kāi)發(fā),因此不能采用VB、VC++等常用的開(kāi)發(fā)工具來(lái)進(jìn)行WindowsCE應(yīng)用程序開(kāi)發(fā),而有專(zhuān)門(mén)的SDK或集成開(kāi)發(fā)環(huán)境來(lái)提供這種開(kāi)發(fā)需要。微軟提供了兩種常用的應(yīng)用程序開(kāi)發(fā)環(huán)境,VisualStudio.NET(簡(jiǎn)稱為VS.NET)以及EmbeddedVisualC++(簡(jiǎn)稱為EVC)。圖6.1是嵌入式系統(tǒng)軟件開(kāi)發(fā)流程。圖6.1嵌入式系統(tǒng)軟件開(kāi)發(fā)流程6.2客戶端TCP網(wǎng)絡(luò)通信測(cè)試6.2.1客戶機(jī)/服務(wù)器模式TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶機(jī)/服務(wù)器模式(client/server),即客戶向服務(wù)器提出請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的服務(wù)??蛻魴C(jī)/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)求的方式。在嵌入式船舶試驗(yàn)系統(tǒng)的控制層網(wǎng)絡(luò)中,數(shù)據(jù)服務(wù)器要接收控制器傳送來(lái)的現(xiàn)場(chǎng)數(shù)據(jù),控制器接收來(lái)自服務(wù)器的一些配置參數(shù)、控制命令等數(shù)據(jù),同時(shí)要確保數(shù)據(jù)準(zhǔn)確無(wú)誤的雙向傳輸。TCP程序的服務(wù)器端運(yùn)行在服務(wù)器上,監(jiān)聽(tīng)是否有連接請(qǐng)求;客戶端運(yùn)行在WindowsCE控制器上,主動(dòng)向服務(wù)器請(qǐng)求連接,其通信模式如圖4-9所示:圖4-9控制器與服務(wù)器通訊模式6.2.2基于TCP/IP的網(wǎng)絡(luò)通信編程實(shí)驗(yàn)在利用WinSock進(jìn)行網(wǎng)絡(luò)應(yīng)用程序編程時(shí),需要調(diào)用一系列的WinSockAPI函數(shù),主要包括四類(lèi):BSDSocketAPI、WinSock延伸函數(shù)、轉(zhuǎn)換函數(shù)、數(shù)據(jù)庫(kù)函數(shù)。BSDSocketAPI是BerkeleySocket風(fēng)格的庫(kù)函數(shù),WinSock延伸(Extended)函數(shù)是Microsoft在BSDSocketAPI基礎(chǔ)上發(fā)展起來(lái)的,在功能上兼容BSDSocketAPI并有所擴(kuò)充。轉(zhuǎn)換函數(shù)主要用來(lái)進(jìn)行16或32位網(wǎng)絡(luò)字節(jié)序的轉(zhuǎn)換。數(shù)據(jù)庫(kù)函數(shù)主要用來(lái)進(jìn)行IP地址和主機(jī)名之間的轉(zhuǎn)換,或者通信協(xié)議和端口號(hào)之間的相關(guān)信息轉(zhuǎn)換。在調(diào)用WSAStartup()加載WinSockDLL后,TCP服務(wù)器端首先調(diào)用socket函數(shù)建立流式套接字,然后調(diào)用bind函數(shù)綁定本地地址,接著調(diào)用Listen函數(shù)進(jìn)行監(jiān)聽(tīng)客戶端連接,一旦監(jiān)聽(tīng)到客戶端連接請(qǐng)求后,服務(wù)器套接字將調(diào)用Accept函數(shù)接受客戶端連接請(qǐng)求并建立連接,同時(shí)服務(wù)器會(huì)新加一個(gè)單獨(dú)的套接字與客戶端進(jìn)行通訊。對(duì)于客戶端,首先調(diào)用socket函數(shù)建立流式套接字,然后調(diào)用connect函數(shù),請(qǐng)求與服務(wù)器端TCP建立連接,成功建立連接后,即可同服務(wù)器端進(jìn)行通訊。在系統(tǒng)應(yīng)用中,運(yùn)行在控制器上的TCP服務(wù)器端程序不斷監(jiān)聽(tīng)上位機(jī)(客戶端)的命令請(qǐng)求,這些指令由編程時(shí)進(jìn)行規(guī)定,控制器根據(jù)指令,將采集到的電機(jī)運(yùn)行參數(shù)上傳至客戶端,或者根據(jù)客戶端的命令對(duì)向輸出模塊發(fā)出指令,并將模塊的應(yīng)答信號(hào)傳回客戶端。圖4-11為用客戶端測(cè)試程序進(jìn)行TCP網(wǎng)絡(luò)通信測(cè)試的界面。圖4-11與控制器的TCP通信測(cè)試在基于嵌入式系統(tǒng)的船舶監(jiān)控系統(tǒng)中,每個(gè)控制器可能連接到多個(gè)上位機(jī),即服務(wù)器端要連接多個(gè)客戶端,則可以應(yīng)用多線程技術(shù)實(shí)現(xiàn)服務(wù)器端對(duì)多個(gè)客戶端的支持。即在服務(wù)器端接收客戶端連接請(qǐng)求(accept)的這步無(wú)限循環(huán),每當(dāng)接收到一個(gè)客戶端請(qǐng)求,產(chǎn)生發(fā)送和接收兩個(gè)線程用來(lái)管理服務(wù)器端與該客戶端的通信任務(wù)。測(cè)試系統(tǒng)的程序設(shè)計(jì)主要實(shí)現(xiàn)了以下功能:1)基于串口(RS485)通訊,控制I/O模塊實(shí)現(xiàn)數(shù)據(jù)采集及控制信號(hào)輸出。采集信號(hào)包括:發(fā)電機(jī)電壓、電流、頻率、功率、功率因素,電動(dòng)機(jī)頻率;輸出信號(hào)包括:發(fā)電機(jī)合閘信號(hào),頻率調(diào)節(jié)信號(hào)。2)本地采集的數(shù)據(jù)通過(guò)RJ45網(wǎng)口實(shí)時(shí)傳送至PC(PC中運(yùn)行數(shù)據(jù)庫(kù)SQLserver2000)。通訊方式為面向連接(基于TCP協(xié)議)的網(wǎng)絡(luò)通訊,以確保數(shù)據(jù)準(zhǔn)確傳輸。以下主要介紹通過(guò)串口通信進(jìn)行I/O模塊控制,以及基于TCP協(xié)議的以太網(wǎng)通信的實(shí)現(xiàn)的方法

七、總結(jié)與展望本文根據(jù)船舶機(jī)艙自動(dòng)化系統(tǒng)的特點(diǎn),追蹤現(xiàn)代船舶的發(fā)展趨勢(shì),依托EP9315片上系統(tǒng)處理器和WindowsCE嵌入式操作系統(tǒng)為軟硬件平臺(tái),設(shè)計(jì)了船用嵌入式系統(tǒng),并以船舶為對(duì)象,提出了嵌入式船舶監(jiān)控系統(tǒng)架構(gòu),在測(cè)試平臺(tái)上進(jìn)行了相關(guān)應(yīng)用程序設(shè)計(jì)。在硬件設(shè)計(jì)上,控制器與I/O部分設(shè)計(jì)成獨(dú)立的模塊,控制器留有與I/O模塊的接口??刂破骶哂泄I(yè)以太網(wǎng)接口、CAN總線接口、大容量的Flash數(shù)據(jù)存儲(chǔ)等資源。由于EP9315片上系統(tǒng)處理器具有較高的性能和豐富的集成外圍接口,使得控制器在硬件上更容易實(shí)現(xiàn)并具有更強(qiáng)大的功能。在軟件設(shè)計(jì)上,本文選擇了WindowsCE5.0嵌入式操作系統(tǒng)。其具有通信功能強(qiáng)大、較高的實(shí)時(shí)性、豐富的人機(jī)界面、具有完善的開(kāi)發(fā)環(huán)境等優(yōu)點(diǎn)。設(shè)計(jì)中利用PlatformBuilder5.0集成開(kāi)發(fā)環(huán)境進(jìn)行BSP、操作系統(tǒng)定制、內(nèi)核調(diào)試及移植、SDK定制等開(kāi)發(fā)工作。操作系統(tǒng)的定制與剪裁原則是在滿足功能的基礎(chǔ)上盡量精簡(jiǎn)系統(tǒng)。本文還針對(duì)船舶為對(duì)象,以嵌入式系統(tǒng)為核心器件,提出了嵌入式船舶監(jiān)控系統(tǒng)的架構(gòu),系統(tǒng)主要具有以下特點(diǎn):1)監(jiān)控系統(tǒng)在結(jié)構(gòu)上更為精簡(jiǎn),從而具有更高的可靠性和易維護(hù)性;2)控制層網(wǎng)絡(luò)采用工業(yè)以太網(wǎng),避免了數(shù)據(jù)傳輸速率受限的“瓶頸”,符合現(xiàn)代船舶信息綜合化的發(fā)展趨勢(shì);3)WindowsCE操作系統(tǒng)在控制器上移植使得系統(tǒng)具有更好的資源管理和任務(wù)調(diào)度的能力,WindowsCE具有開(kāi)發(fā)環(huán)境完善、界面豐富、可靠性好等特點(diǎn)。由于時(shí)間、研究能力等限制,本文只對(duì)嵌入式系統(tǒng)在船舶監(jiān)控系統(tǒng)方面做了一些探索性研究。嵌入式系統(tǒng)在諸多方面性能卓越,它在船舶自動(dòng)化領(lǐng)域中將會(huì)有廣闊的應(yīng)用空間,在進(jìn)一步的研究工作中,還應(yīng)在以下方面進(jìn)行深入研究:1)作為應(yīng)用于船舶上控制裝置,除了應(yīng)具有強(qiáng)大的功能外,還應(yīng)具有較高的可靠性。后續(xù)的研究工作應(yīng)在理論論證的基礎(chǔ)上進(jìn)行一系列可靠性測(cè)試工作。3)嵌入式系統(tǒng)在船舶自動(dòng)化系統(tǒng)中的應(yīng)用,除了要建立在一個(gè)成熟、穩(wěn)定、性能良好的軟硬件平臺(tái)上之外,還有大量的控制過(guò)程和控制邏輯需要通過(guò)應(yīng)用程序?qū)崿F(xiàn),因此,還應(yīng)針對(duì)各種控制對(duì)象,在應(yīng)用程序的算法和實(shí)現(xiàn)上還有大量的工作要做。

致謝最后歷時(shí)將近兩周的時(shí)間終于將這篇論文寫(xiě)完,在論文的寫(xiě)作過(guò)程中遇到了無(wú)數(shù)的困難和障礙,都在同學(xué)和老師的幫助下度過(guò)了。尤其要強(qiáng)烈感謝我的論文指導(dǎo)老師—張曉虎老師,他對(duì)我進(jìn)行了無(wú)私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行論文的修改和改進(jìn)。另外,在校圖書(shū)館查找資料的時(shí)候,圖書(shū)館的老師也給我提供了很多方面的支持與幫助。在此向幫助和指導(dǎo)過(guò)我的各位老師表示最中心的感謝!感謝這篇論文所涉及到的各位學(xué)者。本文引用了數(shù)位學(xué)者的研究文獻(xiàn),如果沒(méi)有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫(xiě)作。感謝我的同學(xué)和朋友,在我寫(xiě)論文的過(guò)程中給予我了很多你問(wèn)素材,還在論文的撰寫(xiě)和排版燈過(guò)程中提供熱情的幫助。由于我的學(xué)術(shù)水平有限,所寫(xiě)論文難免有不足之處,懇請(qǐng)各位老師和學(xué)友批評(píng)和指正!

參考文獻(xiàn)[1]喻方平,李鶴鳴,羅微.微型計(jì)算機(jī)在船舶中的應(yīng)用[M].北京:電子工業(yè)出版社,1997:1-15.[2]尚作斌,林葉錦,楊金保.船舶機(jī)艙自動(dòng)化系統(tǒng)的發(fā)展趨勢(shì)研究[J].世界海運(yùn),2001,24(4):38-40.[3]楊國(guó)豪,徐軼群,林洪貴.船舶設(shè)備管控一體化系統(tǒng)結(jié)構(gòu)及其實(shí)現(xiàn)方法[J].中國(guó)航海,2004(4),67-70.[4]徐軼群,萬(wàn)隆君,楊國(guó)豪.船舶自動(dòng)化系統(tǒng)嵌入式系統(tǒng)研制[J].船舶工程,2007,29(2):77-80.[5]李群芳.單片機(jī)原理與應(yīng)用-嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)[M].武漢:武漢大學(xué)出版社,2006:16-38.[6]王修才,劉祖望.單片機(jī)接口技術(shù)[M].上海:復(fù)旦大學(xué)出版社,1995:22-29.[8]呂京建,肖海橋.面向二十一世紀(jì)的嵌入式系統(tǒng)綜述[J].電子質(zhì)量,2001(8),10-13.[9]馬洪連,丁男,李屹璐,馬艷華.嵌入式系統(tǒng)設(shè)計(jì)教程[M].北京:機(jī)械工業(yè)出版社,2006:12-16,85.[10]田澤.嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用教程[M].北京:北京航空航天出版社,2005:29-33.[11]徐軼群,萬(wàn)隆君,楊國(guó)豪.基于ISP技術(shù)的船舶自動(dòng)化系統(tǒng)[J].中國(guó)航海,2005(1):19-21.[12]江忠明,杜軍,丁穎華,李世錦.基于CAN現(xiàn)場(chǎng)總線的船舶監(jiān)控系統(tǒng)[J].機(jī)電設(shè)備,2002,19(1):19-22.

附錄1:CS8952與EP9315接線原理圖附錄2:程序清單m_ExitThreadEvent=CreateEvent(NULL,TRUE,FALSE,NULL); hRecvThread=CreateThread(0,0,CommRecvTread,this,0,&IDThread);if(hRecvThread==NULL){MessageBox(_T("創(chuàng)建接收線程失敗!"));return;} CloseHandle(hRecvThread);DWORDCSerialPortDlg::CommRecvTread(LPVOIDlparam){DWORDdwLength;char*recvBuf=newchar[1024];CSerialPortDlg*pDlg=(CSerialPortDlg*)lparam;while(TRUE){if(WaitForSingleObject(pDlg->m_ExitThreadEvent,0)==WAIT_OBJECT_0)break; if(pDlg->m_hComm!=INVALID_HANDLE_VALUE){BOOLfReadState=ReadFile(pDlg->m_hComm,recvBuf,1024,&dwLength,NULL);//從串口讀取數(shù)據(jù)if(!fReadState){…//無(wú)法從串口讀取數(shù)據(jù)相應(yīng)處理}else{if(dwLength!=0)OnCommRecv(pDlg,recvBuf,dwLength);//接收成功調(diào)用回調(diào)函數(shù)}}} delete[]recvBuf;return0;}串口回調(diào)函數(shù):typedefvoid(CALLBACK*ONCOMMRECV)(CWnd*pWnd,char*buf,intbuflen);staticvoidCALLBACKOnCommRecv(CWnd*pWnd,char*buf,intbuflen);voidCALLBACKCSerialPortDlg::OnCommRecv(CWnd*pWnd,char*buf,intbuflen){…//數(shù)據(jù)處理過(guò)程}//基于TCP的以太網(wǎng)通信部分程序代碼:服務(wù)器端: WORDwVersionRequested; WSADATAwsaData; interr; wVersionRequested=MAKEWORD(2,2); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0){return; } if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup();return;} SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_INaddrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_INaddrClient; intlen=sizeof(SOCKADDR); while(TURE) { SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);charsendBuf[100];//發(fā)送數(shù)據(jù)緩沖區(qū)…//提取需要向客戶端發(fā)送的數(shù)據(jù)inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0); charrecvBuf[100];//數(shù)據(jù)接收緩沖區(qū) recv(sockConn,recvBuf,100,0); …//處理從客戶端接收到的數(shù)據(jù) closesocket(sockConn); }客戶端:WORDwVersionRequested; WSADATAwsaData; interr;wVersionRequested=MAKEWORD(2,2); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0){ return; } if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup(); return; } SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_INaddrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("9"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); charrecvBuf[100];//接收數(shù)據(jù)緩沖區(qū) recv(sockClient,recvBuf,100,0);…//處理從客戶端接收的數(shù)據(jù)charsendBuf[100];//發(fā)送數(shù)據(jù)存儲(chǔ)區(qū)…//提取向客戶端發(fā)送的數(shù)據(jù) send(sockClient,sendBuf,strlen(sendBuf)+1,0); closesocket(sockClient); WSACleanup();基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專(zhuān)家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開(kāi)發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開(kāi)發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開(kāi)發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開(kāi)發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開(kāi)發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測(cè)儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測(cè)量?jī)x的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門(mén)傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測(cè)儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專(zhuān)用單片機(jī)核的可測(cè)性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測(cè)微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測(cè)基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時(shí)控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測(cè)量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動(dòng)低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測(cè)量?jī)x的研制基于單片機(jī)的紅外測(cè)油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門(mén)機(jī)控制器的研制基于單片機(jī)的氣體測(cè)漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測(cè)技術(shù)研究基于單片機(jī)的膛壁溫度報(bào)警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無(wú)功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測(cè)系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動(dòng)信號(hào)的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實(shí)驗(yàn)中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫爾斯碼自動(dòng)譯碼系統(tǒng)設(shè)計(jì)與研究基于單片機(jī)的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究與開(kāi)發(fā)基于Cygnal單片機(jī)的μC/OS-Ⅱ的研究HYPERLINK"/detail.htm?36

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論