亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux的高溫監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2008-12-31 00:00:00高玲玲
        電腦知識(shí)與技術(shù) 2008年9期

        摘要:為了解決高溫監(jiān)測(cè)系統(tǒng)在原DOS系統(tǒng)中不能實(shí)現(xiàn)多線程所造成的監(jiān)測(cè)系統(tǒng)容量小、系統(tǒng)運(yùn)行不穩(wěn)定、CPU運(yùn)行效率低、應(yīng)用及修改程序不靈活等問(wèn)題?;诟邷乇O(jiān)測(cè)系統(tǒng)V1.0的需求,從完善高溫監(jiān)測(cè)系統(tǒng)功能的角度出發(fā),分析現(xiàn)今Linux的發(fā)展必然是嵌入式系統(tǒng)這一趨勢(shì)。采用功能完善且一開始就針對(duì)實(shí)時(shí)系統(tǒng),在設(shè)計(jì)之初就考慮了小巧、高性能和高效率的MiniGUI圖形用戶界面,提出在Linux上運(yùn)用MiniGUI實(shí)現(xiàn)高溫監(jiān)測(cè)系統(tǒng)。

        關(guān)鍵詞:Linux;MiniGUI;監(jiān)測(cè)系統(tǒng);多線程

        中圖分類號(hào):TP316文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)09-11650-03

        Design And Implementation of High Temperature Watch And Test System Based On Linux Operating System

        GAO Ling-ling1, RUAN Lei2

        (1.Department of Computer Science and Technology, Hefei University,Hefei 230601, China; 2.Wuhan University of Science and technology Zhongnan Branch,Wuhan 432003, China )

        Abstract: In order to solve the incapability of implementing multithreading, which lead to small capability of The High Temperature Watch And Test System ,unstable running system, low running efficiency of the CPU, inflexibility of applying and amending the program ,with the original DOS Operating System. Based on the request of Version 1.0,from the point of view to get a perfect function ,we analyzed the Linux Operating System and found that the development trend is Embedded System. So we adopted the Graphical User Interface MiniGUI , aimed at the Real Time System at the first beginning, considering of the small and cunning , high capability and efficiency at the very start of the program designing. For all the above reasons ,we advanced the item that use MiniGUI to design and implement High Temperature Watch And Test System on Linux Operating System.

        Key words: Linux; MiniGUI; Watch And Test System; multithreading

        1 引言

        DOS操作系統(tǒng),由于其只支持單線程,在程序設(shè)計(jì)中,只能采用查詢法和中斷法來(lái)實(shí)現(xiàn)。查詢法執(zhí)行過(guò)程中,CPU多數(shù)時(shí)間是在等待,造成資源的浪費(fèi)。中斷法在程序設(shè)計(jì)復(fù)雜時(shí),尤其是當(dāng)系統(tǒng)的硬件中斷資源緊張時(shí),很容易造成中斷沖突。Linux具有開放源代碼、內(nèi)核可配置、可裁剪、可移植、可維護(hù)等特點(diǎn)。鑒于工業(yè)控制對(duì)實(shí)時(shí)性的要求, Linux不斷地被應(yīng)用于工業(yè)控制等領(lǐng)域。在Linux上開發(fā)圖形界面,可以為用戶提供友好的交互平臺(tái)。MiniGUI是一個(gè)非常適合工業(yè)控制實(shí)時(shí)系統(tǒng)以及嵌入式系統(tǒng)的可定制的、小巧的圖形用戶界面支持系統(tǒng)。因此,選擇了在Linux上運(yùn)用MiniGUI開發(fā)高溫監(jiān)測(cè)系統(tǒng)的圖形界面。以適應(yīng)今后工業(yè)上對(duì)嵌入式圖形用戶界面輕型、占用資源少、高性能、高可靠性、可配置等特性的需求。

        2 系統(tǒng)設(shè)計(jì)策略

        2.1 多線程策略

        基于I/O的計(jì)算中,采用多線程程序設(shè)計(jì)可以有效的提高系統(tǒng)性能。只要滿足計(jì)算之間在量上有明顯的差異;每個(gè)計(jì)算是相互獨(dú)立的。多線程技術(shù)開發(fā)的應(yīng)用系統(tǒng)可以保證用戶總是能夠在一個(gè)很短的時(shí)間內(nèi)完成與應(yīng)用程序的交互,即響應(yīng)快速的應(yīng)用程序。高溫監(jiān)測(cè)系統(tǒng)具有打印系統(tǒng)信息、測(cè)量機(jī)房溫度、超溫報(bào)警、超壓報(bào)警、測(cè)試設(shè)備運(yùn)行狀態(tài)、測(cè)試電壓等功能。這些都是與I/O有關(guān)的操作,且模塊之間相互獨(dú)立,要求實(shí)時(shí)性強(qiáng)。因此為了在基于I/O計(jì)算的應(yīng)用程序中,實(shí)現(xiàn)對(duì)CPU性能的提高;應(yīng)用程序在處理大部分相互獨(dú)立的計(jì)算中,提高容量;并加快應(yīng)用程序的響應(yīng)速度,我們采用多線程程序設(shè)計(jì)方法來(lái)實(shí)現(xiàn)高溫監(jiān)測(cè)系統(tǒng)。

        2.2 參數(shù)配置策略

        高溫監(jiān)測(cè)系統(tǒng)如果僅局限于監(jiān)測(cè)高溫系統(tǒng)這一單一的功能,則不能滿足不斷變化的系統(tǒng)需求,降低了代碼的使用效率。因此采用了可以在程序啟動(dòng)之后對(duì)參數(shù)進(jìn)行配置的策略,并將配置好的參數(shù)保存留待下一次開機(jī)時(shí)使用。如設(shè)置待“烤機(jī)”數(shù)量及特定的“烤機(jī)”標(biāo)號(hào)、最高報(bào)警溫度、最低報(bào)警溫度、最高報(bào)警電壓、最低報(bào)警電壓、以及打印數(shù)據(jù)時(shí)間間隔。這樣不但方便了用戶的使用,而且增加了程序的適用范圍及靈活性,用戶不需要修改或者稍加修改就可以用在其他的相關(guān)領(lǐng)域,減少了同類功能程序的開發(fā)周期,提高了代碼的重用性。

        3 系統(tǒng)的實(shí)現(xiàn)

        3.1 環(huán)境的搭建

        運(yùn)行平臺(tái):8253工業(yè)主板,主頻PII200MHz,32M RAM,32M DOM,ISA總線接口,網(wǎng)口,32/24 I/O板兩塊,研祥A/D板一塊,TOKY溫控表,一臺(tái)EPSON并口打印機(jī)。應(yīng)用NC110或其他體系結(jié)構(gòu)。

        軟件平臺(tái):Linux kernel 2.4.20 +MiniGUI1.3

        3.2 系統(tǒng)的實(shí)現(xiàn)

        3.2.1 顯示視窗的實(shí)現(xiàn)

        Thread版本運(yùn)行在多線程模式下,它的許多模塊都以單獨(dú)的線程運(yùn)行;同時(shí),還利用線程來(lái)支持多窗口,即每個(gè)主窗口對(duì)應(yīng)于一個(gè)單獨(dú)的線程,每個(gè)線程有一個(gè)消息隊(duì)列,一個(gè)線程向消息隊(duì)列中發(fā)送消息,而另一個(gè)線程從這個(gè)消息隊(duì)列中獲取消息,同一個(gè)線程中創(chuàng)建的窗口可共享同一個(gè)消息隊(duì)列。MiniGUI利用消息隊(duì)列多線程之間的同步機(jī)制,實(shí)現(xiàn)客戶/服務(wù)器機(jī)制,建立基于線程的消息傳遞和窗口管理機(jī)制。

        窗口功能提供字符操作界面。用MiniGUI實(shí)現(xiàn)窗口、對(duì)話框、編輯框、按紐、菜單等圖形功能。共六個(gè)窗口分別為:顯示64臺(tái)CNC狀態(tài);根據(jù)輸入?yún)?shù)確定顯示多少臺(tái)數(shù)控的運(yùn)行信息,如只對(duì)10臺(tái)CNC進(jìn)行“烤機(jī)”,那么只顯示10臺(tái)CNC的信息;顯示最近一個(gè)小時(shí)的溫度及電壓曲線;顯示整個(gè)“烤機(jī)”過(guò)程的溫度,電壓曲線;在編輯框中顯示當(dāng)前溫度、當(dāng)前電壓,目前最大溫度、最小溫度,最大電壓、最小電壓,顯示系統(tǒng)提示,當(dāng)前時(shí)間,系統(tǒng)開機(jī)運(yùn)行以來(lái),到目前為止運(yùn)行時(shí)間等。

        3.2.2 系統(tǒng)功能模塊實(shí)現(xiàn)

        采用多線程的方式,使得完成各個(gè)功能模塊的線程可以在互相不干擾的情況下獨(dú)立的進(jìn)行。通過(guò)全局變量和全局?jǐn)?shù)據(jù)結(jié)構(gòu)與主程序進(jìn)行數(shù)據(jù)交換。由于Linux對(duì)I/O板和A/D板不提供驅(qū)動(dòng),需要編寫二個(gè)驅(qū)動(dòng)程序,將其加載到Linux的/dev目錄下[1]。驅(qū)動(dòng)程序的讀操作函數(shù)定義如下:

        ssize_t scullc_read (struct file *filp, char *buf, size_t count,loff_t *f_pos)

        本系統(tǒng)共使用了四個(gè)線程。第一個(gè)線程完成的功能,是采集智能溫控表數(shù)據(jù)。由于溫控表連接的是串口,Linux提供對(duì)串口的驅(qū)動(dòng)程序。我們需要與串口通信,設(shè)置端口、數(shù)據(jù)位、波特率、奇偶校驗(yàn)、停止位等屬性。第二個(gè)線程,用來(lái)控制打印機(jī)的輸出。Linux同樣提供并口驅(qū)動(dòng)程序。應(yīng)用并口打印機(jī)定時(shí)、準(zhǔn)確打印出當(dāng)前系統(tǒng)狀態(tài)。系統(tǒng)的開始運(yùn)行時(shí)間、系統(tǒng)結(jié)束時(shí)間、在系統(tǒng)出錯(cuò)時(shí),立刻打印出當(dāng)前系統(tǒng)時(shí)間和出錯(cuò)系統(tǒng)的編號(hào)。需要注意的是,Linux下的打印機(jī)不能直接接受命令打印,而是需要一個(gè)打印隊(duì)列,按照隊(duì)列中的先后次序打印信息。第三個(gè)線程完成的功能,是從兩塊I/O板采集64個(gè)輸入點(diǎn)的數(shù)據(jù),根據(jù)從輸入點(diǎn)采集回來(lái)的數(shù)據(jù),編寫程序以判斷當(dāng)前該點(diǎn)狀態(tài)是否正常。并在滿足溫度和電壓報(bào)警值的情況下,向I/O板發(fā)出報(bào)警信號(hào)。第四個(gè)線程完成的功能,是從一塊A/D板采集數(shù)據(jù),并轉(zhuǎn)換成電壓值,為了減小測(cè)量值和真實(shí)值之間的誤差,加入了電壓值增補(bǔ)。 四個(gè)線程的創(chuàng)建[2]:

        pthread_t t1,t2,t3,t4,t5,t6;

        pthread_create(t1,NULL,(void *)ReadTemp,NULL);// 創(chuàng)建讀溫度線程

        pthread_create(t2,NULL,(void *)PrintData,NULL);// 創(chuàng)建打印輸出線程

        pthread_create(t3,NULL,(void *)CNCSTATUS,NULL);// 創(chuàng)建測(cè)試CNC狀態(tài)線程

        pthread_create(t4,NULL,(void *)VoltVal,NULL);// 創(chuàng)建電壓線程

        3.3 窗口實(shí)現(xiàn)

        首先,激活FrameBuffer,這里我使用的是lilo引導(dǎo)裝載器,需要修改/etc/lilo.conf,在lilo.conf中添加vga=0x0314顯示模式為800x600x16bpp。其次,運(yùn)行l(wèi)ilo命令,使修改生效,并重新啟動(dòng)系統(tǒng)[3-5]。

        MiniGUI程序的入口點(diǎn)為MiniGUIMain 函數(shù)原形如下:int MiniGUIMain (int args, const char* arg[]);應(yīng)用程序一般通過(guò)DialogBoxIndirectParam函數(shù)創(chuàng)建對(duì)話框;在消息循環(huán)中,當(dāng)程序向消息隊(duì)列發(fā)送case MSG_PAINT時(shí),運(yùn)行繪圖程序;當(dāng)程序向消息隊(duì)列發(fā)送定時(shí)器消息case MSG_TIMER時(shí),每個(gè)一段設(shè)置的固定時(shí)間,就執(zhí)行相應(yīng)的程序。在這里我實(shí)現(xiàn)了曲線的定時(shí)刷新。運(yùn)行l(wèi)dd命令,查看程序所需的鏈接庫(kù)文件名,將其拷貝到dom中與原來(lái)linux系統(tǒng)相對(duì)應(yīng)的位置,再用gcc命令進(jìn)行編譯的時(shí)候加上選項(xiàng)-static這樣就實(shí)現(xiàn)了靜態(tài)編譯。將編譯好的靜態(tài)文件拷入dom中,就可以運(yùn)行了。

        4 結(jié)束語(yǔ)

        本文從完善高溫監(jiān)測(cè)系統(tǒng)功能出發(fā),分析了Linux、MiniGUI、多線程運(yùn)用于高溫監(jiān)測(cè)系統(tǒng)的諸多優(yōu)點(diǎn)。并且該項(xiàng)目已經(jīng)在高精數(shù)控“烤機(jī)”中應(yīng)用,具有系統(tǒng)運(yùn)行穩(wěn)定,CPU運(yùn)行效率顯著提高,監(jiān)測(cè)系統(tǒng)容量大幅度增加,操作迅速簡(jiǎn)潔,鼠標(biāo)和鍵盤可以互相獨(dú)立進(jìn)行操作。便于運(yùn)用及修改程序,使其可以應(yīng)用于類似的監(jiān)測(cè)項(xiàng)目中,并對(duì)相關(guān)的應(yīng)用具有一定的參考價(jià)值。

        參考文獻(xiàn):

        [1] 魏永明,耿岳,鐘書毅,譯. Linux設(shè)備驅(qū)動(dòng)程序[M]. 中國(guó)電力出版社,2006.

        [2] 李玉波. Linux C編程[M]. 清華大學(xué)出版社,2005.

        [3] 飛漫軟件. MiniGUI用戶手冊(cè). 適用于MiniGUI ver 1.3.x

        [4] 北京飛漫軟件技術(shù)有限公司. MiniGUI 技術(shù)白皮書,2005.

        [5] 北京飛漫軟件技術(shù)有限公司. MiniGUI API Reference Manual,2003.

        无码人妻丰满熟妇啪啪网不卡| 亚洲国产日韩综一区二区在性色 | 国产av一区二区三区在线| 蜜桃传媒网站在线观看| 丝袜美腿在线观看视频| 风韵犹存丰满熟妇大屁股啪啪| 性色av一二三天美传媒| 亚洲国产精品va在线播放| 啪啪无码人妻丰满熟妇| 国产熟女精品一区二区| 漂亮人妻被强了完整版| 无码人妻精品一区二区在线视频| 午夜免费福利在线观看| 福利视频自拍偷拍视频| 中文字幕亚洲综合久久天堂av| 亚洲爆乳精品无码一区二区| 亚洲AV无码国产永久播放蜜芽| 高清亚洲精品一区二区三区| 麻豆资源在线观看视频| 亚洲丁香五月天缴情综合| 91久久精品国产91久久| 国产三级在线观看性色av| 一区二区视频中文字幕| 果冻传媒2021精品一区| 永久无码在线观看| 日本女优中文字幕有码| 亚洲av无码乱码精品国产| 欧美疯狂做受xxxx高潮小说| 色噜噜狠狠色综合欧洲| 国产99久久久国产精品免费| 日本少妇又色又爽又高潮| 精品国产aⅴ无码一区二区| 无码人妻丝袜在线视频| 人妻乱交手机在线播放| 精品国产天堂综合一区在线| 99久久99久久精品国产片果冻| 国产欧美亚洲精品第二区首页| 日本一区二区不卡在线| 久久人妻少妇嫩草av无码专区| 亚洲婷婷丁香激情| 亚洲av日韩精品一区二区|