999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM的電梯遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器端設(shè)計(jì)

2012-08-15 00:47:30
唐山學(xué)院學(xué)報(bào) 2012年3期
關(guān)鍵詞:進(jìn)程電梯

李 好

(唐山學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,河北唐山063000)

基于ARM的電梯遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器端設(shè)計(jì)

李 好

(唐山學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,河北唐山063000)

應(yīng)用網(wǎng)絡(luò)通信技術(shù),開(kāi)發(fā)了基于ARM的電梯運(yùn)行狀態(tài)的遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器端,為電梯在運(yùn)行過(guò)程中故障的發(fā)現(xiàn)、分析和排除提供了設(shè)計(jì)依據(jù)。

電梯;遠(yuǎn)程監(jiān)控;ARM;服務(wù)器

0 引言

電梯作為機(jī)電一體化的大型機(jī)械設(shè)備,在高層建筑運(yùn)輸中起著非常重要的作用,是樓宇自動(dòng)化必不可少的部分。但是由于電梯的結(jié)構(gòu)復(fù)雜,運(yùn)行可靠性要求高,使得遠(yuǎn)程監(jiān)控其運(yùn)行狀態(tài)和故障情況成為電梯管理、維護(hù)和安全運(yùn)行的迫切要求[1]。

目前國(guó)內(nèi)外電梯遠(yuǎn)程監(jiān)控服務(wù)器端設(shè)計(jì)大都基于x86體系結(jié)構(gòu),采用微軟Windows系列操作系統(tǒng),和面向?qū)ο缶幊陶Z(yǔ)言對(duì)服務(wù)器端進(jìn)行軟件設(shè)計(jì),并以傳統(tǒng)電話線作為通信控制線路。本文給出的電梯遠(yuǎn)程監(jiān)控系統(tǒng)服務(wù)器端設(shè)計(jì)基于ARM體系結(jié)構(gòu),采用開(kāi)源嵌入式Linux作為操作系統(tǒng),C++設(shè)計(jì)通信控制接口,網(wǎng)線作為通信線路。與國(guó)內(nèi)外大多數(shù)電梯遠(yuǎn)程控制系統(tǒng)相比,具有功耗低、體積小、集成度高、性能穩(wěn)定、執(zhí)行速度快、成本低、實(shí)時(shí)性強(qiáng)、安全性高、生命周期長(zhǎng)、性價(jià)比高等優(yōu)勢(shì)。本設(shè)計(jì)采用TQ2440ARM9開(kāi)發(fā)板作為服務(wù)器端,采用PC機(jī)作為客戶機(jī)端,并在客戶機(jī)端安裝Ubuntu 10.04操作系統(tǒng),服務(wù)器和客戶機(jī)使用網(wǎng)線連接。在服務(wù)器端構(gòu)建電梯模型并完成鍵盤(pán)模擬電梯運(yùn)行,同時(shí)用攝像頭采集視頻圖像,進(jìn)行JPEG壓縮處理,然后通過(guò)網(wǎng)絡(luò)傳輸,將視頻圖像和電梯運(yùn)行數(shù)據(jù)傳輸至監(jiān)控中心(主機(jī))進(jìn)行實(shí)時(shí)顯示。

1 服務(wù)器環(huán)境搭建

一個(gè)嵌入式Linux系統(tǒng)從軟件角度可分為四部分:引導(dǎo)加載程序Bootloader,Linux內(nèi)核,文件系統(tǒng)和應(yīng)用程序[2]。

Bootloader是系統(tǒng)上電后運(yùn)行的第一段程序。在完成對(duì)系統(tǒng)的初始化任務(wù)之后,將非易失性存儲(chǔ)器中的Linux內(nèi)核拷貝到RAM中,然后跳轉(zhuǎn)到內(nèi)核的第一條指令處繼續(xù)執(zhí)行,啟動(dòng)Linux內(nèi)核。

Linux內(nèi)核有兩種映像:一種是非壓縮內(nèi)核Image,另一種是它的壓縮版本zImage。嵌入式系統(tǒng)的存儲(chǔ)空間一般較小,所以這里采用壓縮內(nèi)核的方式。編譯完成后,會(huì)在內(nèi)核目錄arch/ARM/boot/下生成zImage內(nèi)核映像文件。

把TQ2440光盤(pán)自帶的Linux-2.6.30內(nèi)核源碼包解壓到/home目錄,即可開(kāi)始配置。進(jìn)入Linux-2.6.30內(nèi)核主目錄,通過(guò)cp命令,用目錄下自帶的配置文件,生成.config文件,然后開(kāi)始配置Linux內(nèi)核。使用make menuconfig命令對(duì)內(nèi)核進(jìn)行配置,可在原有的配置單上進(jìn)行相應(yīng)的修改。在配置時(shí)把系統(tǒng)所需要的驅(qū)動(dòng)(.ko文件)添加進(jìn)去。

2 服務(wù)器運(yùn)行流程

該系統(tǒng)采用C/S結(jié)構(gòu),服務(wù)器端TQ2440ARM9開(kāi)發(fā)板上連接ZC0301U口攝像頭,用于視頻獲取。由于QT顯示視頻流難度較大,故選擇圖片刷新方法來(lái)實(shí)現(xiàn)服務(wù)器端圖像的采集,通過(guò)網(wǎng)線將圖片從服務(wù)器傳到客戶端實(shí)時(shí)顯示。此外該系統(tǒng)還利用TQ2440開(kāi)發(fā)板上的四個(gè)用戶按鍵,模擬電梯運(yùn)行。當(dāng)按下某個(gè)按鍵時(shí),會(huì)將相應(yīng)的信息通過(guò)網(wǎng)線傳到客戶端,客戶端管理員即可從PC機(jī)屏幕上看到當(dāng)前的電梯運(yùn)行狀態(tài)。

3 服務(wù)器功能設(shè)計(jì)

3.1 進(jìn)程管理

進(jìn)程管理采用多進(jìn)程編程。進(jìn)程是一個(gè)運(yùn)行實(shí)體。每一個(gè)進(jìn)程都有它自己的地址空間,一般情況下包括文本區(qū)域、數(shù)據(jù)區(qū)域和堆棧。文本區(qū)域存儲(chǔ)處理器執(zhí)行的代碼;數(shù)據(jù)區(qū)域存儲(chǔ)變量和進(jìn)程執(zhí)行期間使用的動(dòng)態(tài)分配的內(nèi)存;堆棧區(qū)域存儲(chǔ)活動(dòng)過(guò)程調(diào)用的指令和本地變量。

在該系統(tǒng)中,系統(tǒng)的服務(wù)器端需要不斷地發(fā)送攝像頭獲取的圖片,同時(shí)還要將按鍵模擬的電梯運(yùn)行數(shù)據(jù)實(shí)時(shí)地傳送到客戶端,這樣顯然不可能用同一個(gè)進(jìn)程同時(shí)進(jìn)行這兩項(xiàng)任務(wù)。這時(shí)就需要利用多進(jìn)程依靠時(shí)間片輪轉(zhuǎn)調(diào)度策略來(lái)實(shí)現(xiàn)進(jìn)程的并發(fā)執(zhí)行。

在該模塊中,首先運(yùn)行server程序,程序運(yùn)行后,利用fork函數(shù)創(chuàng)建一個(gè)新的進(jìn)程稱為子進(jìn)程。該函數(shù)被調(diào)用一次但返回兩次。兩次返回的值不同:在子進(jìn)程中返回的值是0,而父進(jìn)程中的返回值則是新創(chuàng)建的子進(jìn)程的PID。因此可根據(jù)fork函數(shù)的返回值確定當(dāng)前是處于父進(jìn)程還是子進(jìn)程。將子進(jìn)程PID返回給父進(jìn)程的原因是:一個(gè)進(jìn)程可有多個(gè)子進(jìn)程,沒(méi)有一個(gè)函數(shù)可以使一個(gè)進(jìn)程獲得其所有子進(jìn)程的PID。

fork函數(shù)生成的子進(jìn)程是父進(jìn)程的復(fù)制品,子進(jìn)程獲得父進(jìn)程的數(shù)據(jù)空間,堆和棧的復(fù)制品。而fork函數(shù)最常用的并不是復(fù)制原函數(shù),而是在創(chuàng)建一個(gè)新的進(jìn)程后,調(diào)用exec函數(shù)。exec函數(shù)啟動(dòng)一個(gè)新程序,替換原有的進(jìn)程,因此這個(gè)新的被exec執(zhí)行的進(jìn)程的PID是不會(huì)改變的。在該進(jìn)程管理中,首先調(diào)用fork函數(shù)創(chuàng)建一個(gè)新的進(jìn)程,然后在新的進(jìn)程中調(diào)用exec函數(shù),執(zhí)行按鍵模擬電梯運(yùn)行程序,而在父進(jìn)程中則運(yùn)行服務(wù)器視頻圖像采集模塊。

3.2 視頻圖像采集

服務(wù)器視頻采集由ZC0301攝像頭和TQ2440ARM9開(kāi)發(fā)板共同執(zhí)行。由于Linux-2.6.30內(nèi)核中默認(rèn)是不添加攝像頭驅(qū)動(dòng)的,故在使用攝像頭之前需要對(duì)內(nèi)核進(jìn)行配置和移植。

在Linux系統(tǒng)下,首先從TQ2440開(kāi)發(fā)板自帶光盤(pán)中將2.6.30內(nèi)核源碼包解壓縮到/home目錄下,進(jìn)入解壓出來(lái)的目錄。輸入命令make distclean,即可將曾編譯生成的一些文件zImage以及.config文件刪除掉。然后根據(jù)開(kāi)發(fā)板型號(hào)選擇相應(yīng)的配置文件,復(fù)制該文件并重命名為.config,這樣就產(chǎn)生一個(gè)默認(rèn)的配置文件。然后在該目錄下,輸入命令make menuconfig即可看到內(nèi)核配置界面。在這里我們需要添加攝像頭驅(qū)動(dòng)模塊,直接將該驅(qū)動(dòng)模塊編譯到內(nèi)核中。在配置完成后按ESC鍵退出并保存。

在對(duì)內(nèi)核配置完成后,在該目錄下輸入命令make zImage編譯內(nèi)核。將編譯后的內(nèi)核重新燒到開(kāi)發(fā)板上,插上攝像頭,在minicom下即可看到攝像頭的提示信息。在開(kāi)發(fā)板/dev下可以看到VIdeo0設(shè)備,說(shuō)明攝像頭驅(qū)動(dòng)安裝正確。

在攝像頭可以正常使用后,使用vidcat程序從攝像頭抓取圖像并保存在當(dāng)前目錄下,利用網(wǎng)絡(luò)圖像傳輸模塊進(jìn)行圖像傳輸。

3.3 視頻圖像發(fā)送

服務(wù)器視頻圖像發(fā)送是將攝像頭截取的視頻圖像從服務(wù)器端通過(guò)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)娇蛻舳恕_@里采用socket套接字網(wǎng)絡(luò)通信。在本系統(tǒng)中由于需要實(shí)時(shí)地掌握服務(wù)器端的數(shù)據(jù)信息,對(duì)網(wǎng)絡(luò)傳輸?shù)馁|(zhì)量和時(shí)效性要求比較高,故采用了面向連接和具有重傳策略的TCP套接字,而沒(méi)有采用UDP套接字。

服務(wù)器端需要調(diào)用socket函數(shù)生成一個(gè)套接字。該函數(shù)如果調(diào)用成功,會(huì)返回一個(gè)文件描述符。文件描述符與文件的打開(kāi)模式、文件的位置類(lèi)型、文件的初始類(lèi)型等文件對(duì)象相關(guān)聯(lián),這些信息被稱作文件的上下文[3]。在使用socket進(jìn)行網(wǎng)絡(luò)傳輸之前,我們配置該socket。面向連接的TCP套接字的服務(wù)器端需要通過(guò)調(diào)用bind函數(shù)來(lái)配置本地信息。bind函數(shù)將socket與網(wǎng)絡(luò)上某個(gè)IP相關(guān)聯(lián),而且需要和該IP主機(jī)上的一個(gè)端口相關(guān)聯(lián),隨后就可以在該IP上對(duì)該端口進(jìn)行監(jiān)聽(tīng)服務(wù)請(qǐng)求。使用面向連接的socket客戶端通信時(shí),服務(wù)器端需要調(diào)用accept函數(shù)在套接字?jǐn)?shù)據(jù)結(jié)構(gòu)中保存本地和遠(yuǎn)端信息。listen函數(shù)使socket處于被動(dòng)的監(jiān)聽(tīng)模式,并且為該socket建立一個(gè)輸入數(shù)據(jù)隊(duì)列,將到達(dá)的服務(wù)請(qǐng)求保存在此隊(duì)列中,直到程序處理完它們?yōu)橹梗?]。

客戶端調(diào)用connect函數(shù)啟動(dòng)和遠(yuǎn)端主機(jī)直接連接。這樣只有面向連接的客戶端程序使用socket時(shí)才需要將此socket與遠(yuǎn)端主機(jī)相連,當(dāng)然,客戶端需要首先知道服務(wù)器端的IP地址以及端口號(hào),只有這樣,才能保證客戶端能夠找到正確的服務(wù)器端。服務(wù)器端的accept函數(shù)接收到連接請(qǐng)求后,如果接收成功,則會(huì)返回一個(gè)用于和客戶端通信的套接字,這樣服務(wù)器與客戶端就可以開(kāi)始通信了。

需要注意的是通信一定要保證數(shù)據(jù)讀寫(xiě)的交互,尤其是在循環(huán)體內(nèi)還有其他文件操作時(shí),一定要考慮到同步的問(wèn)題。這里需要利用read和write兩個(gè)函數(shù)來(lái)進(jìn)行交互以及同步。因?yàn)閞ead函數(shù)是阻塞的,當(dāng)讀緩沖區(qū)沒(méi)有數(shù)據(jù)時(shí),程序會(huì)阻塞在read函數(shù),一直到能夠讀到數(shù)據(jù)為止,程序才會(huì)向下進(jìn)行。服務(wù)器端視頻圖像發(fā)送流程為:先將抓取的圖片使用open函數(shù)打開(kāi)放到設(shè)置的讀寫(xiě)緩沖區(qū),使用write函數(shù)發(fā)送到客戶端,客戶端使用read函數(shù)接收將數(shù)據(jù)寫(xiě)入到文件中,再利用write函數(shù)給服務(wù)器端一個(gè)消息,說(shuō)明數(shù)據(jù)已成功接收。服務(wù)器端使用read函數(shù)來(lái)獲取這個(gè)消息。

3.4 按鍵電梯模擬

該系統(tǒng)中利用TQ2440開(kāi)發(fā)板自帶的四個(gè)用戶按鍵模擬電梯運(yùn)行,使用K1和K2分別控制電梯的上行和下行,使用K3的交替來(lái)控制電梯門(mén)的開(kāi)啟和關(guān)閉,使用K4來(lái)控制報(bào)警與取消報(bào)警。由于TQ2440開(kāi)發(fā)板自帶的內(nèi)核中沒(méi)有加載用戶按鍵驅(qū)動(dòng),所以需要將用戶按鍵驅(qū)動(dòng)直接編譯到內(nèi)核中。將新編譯生成的內(nèi)核燒寫(xiě)到開(kāi)發(fā)板上,則在設(shè)備文件中就多了一個(gè)名為IRQ_Test的設(shè)備文件。

設(shè)備驅(qū)動(dòng)安裝完成后,編寫(xiě)按鍵信息獲取模塊。定義一個(gè)存放按鍵信息的數(shù)組,使用open函數(shù)打開(kāi)IRQ_Test設(shè)備文件,使用read函數(shù)阻塞式讀取設(shè)備信息。當(dāng)沒(méi)有按鍵信息時(shí),就會(huì)阻塞在read函數(shù)處,當(dāng)有按鍵按下時(shí)則將信息存儲(chǔ)在上述定義的數(shù)組中。利用循環(huán)判斷數(shù)組的哪個(gè)單元有數(shù)據(jù)即可確定哪個(gè)按鍵被按下。創(chuàng)建一個(gè)網(wǎng)絡(luò)連接和客戶端進(jìn)行通信。將按鍵信息存于buf[0],這樣在將信息發(fā)送給客戶端時(shí),只需判斷該單元的數(shù)據(jù)值即可進(jìn)行相應(yīng)的處理。

4 結(jié)論

本文使用TQ2440ARM9嵌入式開(kāi)發(fā)板作為電梯服務(wù)器端,并在其上構(gòu)建電梯模型,完成鍵盤(pán)模擬電梯的運(yùn)行,同時(shí)用攝像頭采集視頻圖像,通過(guò)網(wǎng)絡(luò)傳輸,將視頻圖像和電梯運(yùn)行數(shù)據(jù)傳輸至監(jiān)控中心進(jìn)行實(shí)時(shí)顯示。此設(shè)計(jì),具有傳輸可靠、操作方便的特點(diǎn),可較好地實(shí)現(xiàn)對(duì)電梯運(yùn)行情況的實(shí)時(shí)監(jiān)控,具有較高的商業(yè)價(jià)值。

[1] 余輝.嵌入式Linux程序設(shè)計(jì)案例與實(shí)驗(yàn)教程[M].北京:機(jī)械工業(yè)出版社,2009:238-248.

[2] 三恒星科技.ARM9應(yīng)用實(shí)例[M].北京:電子工業(yè)出版社,2008:120-150.

[3] Scaglia Sergio.嵌入式Internet TCP/IP基礎(chǔ)、實(shí)現(xiàn)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008:215-250.

[4] 怯肇乾.嵌入式網(wǎng)絡(luò)通信開(kāi)發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010:64-105.

(責(zé)任編校:李秀榮)

Server Design of Elevator Remote Monitor System Based on ARM

LI Hao

(Department of Computer Science and Technology,Tangshan College,Tangshan 063000,China)

Using the network communications technology,the elevator remote monitor system server is developed based on ARM and it provides a basis for the elevator failure discovery,analysis and exclusion during the system running.

elevator;remote monitor;ARM;server

book=5,ebook=5

TP277

A

1672-349X(2012)03-0085-02

2012-03-14

李好(1977-),男,河北灤縣人,講師,碩士,主要從事操作系統(tǒng)研究。

猜你喜歡
進(jìn)程電梯
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
帝奧電梯
被困電梯以后
電梯不吃人
電梯驚魂
乘電梯
我國(guó)高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
男女平等進(jìn)程中出現(xiàn)的新矛盾和新問(wèn)題
俄羅斯現(xiàn)代化進(jìn)程的阻礙
主站蜘蛛池模板: 国产真实乱子伦精品视手机观看 | 69国产精品视频免费| 久久中文电影| 亚洲天堂首页| 亚洲成人一区二区三区| 久久久久久午夜精品| 欧美成在线视频| 国产成人综合亚洲欧洲色就色| 伊人天堂网| 久久国产精品嫖妓| 国产成人精品第一区二区| 国产91丝袜在线观看| 日韩第一页在线| 欧美一级高清免费a| 伊人丁香五月天久久综合| 国产91九色在线播放| 青青操国产视频| 亚洲精品国产日韩无码AV永久免费网| 国产一区二区影院| 青青青草国产| 欧美亚洲欧美| 国产福利一区在线| 午夜精品福利影院| 国产精品视频系列专区| 国产成人精品一区二区| 亚洲国产看片基地久久1024 | 久久精品日日躁夜夜躁欧美| 国产网站免费| 国产一区二区三区在线观看视频 | 伊人天堂网| 国产一二视频| 久久婷婷色综合老司机| 福利一区在线| 72种姿势欧美久久久大黄蕉| 亚洲女同一区二区| 日韩人妻少妇一区二区| 国产男女XX00免费观看| aa级毛片毛片免费观看久| 日本AⅤ精品一区二区三区日| 精品成人一区二区三区电影 | 一级爱做片免费观看久久| 日韩麻豆小视频| 日韩资源站| 欧美成人午夜在线全部免费| 国产区免费精品视频| 国产无码性爱一区二区三区| 欧美视频在线不卡| 久久免费精品琪琪| 永久成人无码激情视频免费| 91探花国产综合在线精品| 永久成人无码激情视频免费| 亚洲av无码成人专区| 91欧美亚洲国产五月天| 国产精品99在线观看| 国产幂在线无码精品| 久久人搡人人玩人妻精品一| 欧美不卡视频在线| 亚洲女同一区二区| 午夜免费小视频| 免费大黄网站在线观看| 波多野结衣一区二区三区四区| 亚洲无码在线午夜电影| 一级毛片网| 亚洲无码高清视频在线观看| 国产91av在线| 51国产偷自视频区视频手机观看| 亚洲欧美另类视频| 国产日本欧美在线观看| 欧美区一区二区三| 久久综合九九亚洲一区| 欧美区一区二区三| 久久国产香蕉| 热久久综合这里只有精品电影| 国模沟沟一区二区三区| 欧美色图第一页| 国产欧美日韩另类精彩视频| 丝袜久久剧情精品国产| 无码精品福利一区二区三区| 热re99久久精品国99热| 伊人久久久久久久| 国产精品无码一区二区桃花视频| 欧美影院久久|