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

基于Linux的高溫監測系統設計與實現

2008-12-31 00:00:00高玲玲
電腦知識與技術 2008年9期

摘要:為了解決高溫監測系統在原DOS系統中不能實現多線程所造成的監測系統容量小、系統運行不穩定、CPU運行效率低、應用及修改程序不靈活等問題。基于高溫監測系統V1.0的需求,從完善高溫監測系統功能的角度出發,分析現今Linux的發展必然是嵌入式系統這一趨勢。采用功能完善且一開始就針對實時系統,在設計之初就考慮了小巧、高性能和高效率的MiniGUI圖形用戶界面,提出在Linux上運用MiniGUI實現高溫監測系統。

關鍵詞:Linux;MiniGUI;監測系統;多線程

中圖分類號:TP316文獻標識碼:A文章編號: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操作系統,由于其只支持單線程,在程序設計中,只能采用查詢法和中斷法來實現。查詢法執行過程中,CPU多數時間是在等待,造成資源的浪費。中斷法在程序設計復雜時,尤其是當系統的硬件中斷資源緊張時,很容易造成中斷沖突。Linux具有開放源代碼、內核可配置、可裁剪、可移植、可維護等特點。鑒于工業控制對實時性的要求, Linux不斷地被應用于工業控制等領域。在Linux上開發圖形界面,可以為用戶提供友好的交互平臺。MiniGUI是一個非常適合工業控制實時系統以及嵌入式系統的可定制的、小巧的圖形用戶界面支持系統。因此,選擇了在Linux上運用MiniGUI開發高溫監測系統的圖形界面。以適應今后工業上對嵌入式圖形用戶界面輕型、占用資源少、高性能、高可靠性、可配置等特性的需求。

2 系統設計策略

2.1 多線程策略

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

2.2 參數配置策略

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

3 系統的實現

3.1 環境的搭建

運行平臺:8253工業主板,主頻PII200MHz,32M RAM,32M DOM,ISA總線接口,網口,32/24 I/O板兩塊,研祥A/D板一塊,TOKY溫控表,一臺EPSON并口打印機。應用NC110或其他體系結構。

軟件平臺:Linux kernel 2.4.20 +MiniGUI1.3

3.2 系統的實現

3.2.1 顯示視窗的實現

Thread版本運行在多線程模式下,它的許多模塊都以單獨的線程運行;同時,還利用線程來支持多窗口,即每個主窗口對應于一個單獨的線程,每個線程有一個消息隊列,一個線程向消息隊列中發送消息,而另一個線程從這個消息隊列中獲取消息,同一個線程中創建的窗口可共享同一個消息隊列。MiniGUI利用消息隊列多線程之間的同步機制,實現客戶/服務器機制,建立基于線程的消息傳遞和窗口管理機制。

窗口功能提供字符操作界面。用MiniGUI實現窗口、對話框、編輯框、按紐、菜單等圖形功能。共六個窗口分別為:顯示64臺CNC狀態;根據輸入參數確定顯示多少臺數控的運行信息,如只對10臺CNC進行“烤機”,那么只顯示10臺CNC的信息;顯示最近一個小時的溫度及電壓曲線;顯示整個“烤機”過程的溫度,電壓曲線;在編輯框中顯示當前溫度、當前電壓,目前最大溫度、最小溫度,最大電壓、最小電壓,顯示系統提示,當前時間,系統開機運行以來,到目前為止運行時間等。

3.2.2 系統功能模塊實現

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

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

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

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

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

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

pthread_create(t3,NULL,(void *)CNCSTATUS,NULL);// 創建測試CNC狀態線程

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

3.3 窗口實現

首先,激活FrameBuffer,這里我使用的是lilo引導裝載器,需要修改/etc/lilo.conf,在lilo.conf中添加vga=0x0314顯示模式為800x600x16bpp。其次,運行lilo命令,使修改生效,并重新啟動系統[3-5]。

MiniGUI程序的入口點為MiniGUIMain 函數原形如下:int MiniGUIMain (int args, const char* arg[]);應用程序一般通過DialogBoxIndirectParam函數創建對話框;在消息循環中,當程序向消息隊列發送case MSG_PAINT時,運行繪圖程序;當程序向消息隊列發送定時器消息case MSG_TIMER時,每個一段設置的固定時間,就執行相應的程序。在這里我實現了曲線的定時刷新。運行ldd命令,查看程序所需的鏈接庫文件名,將其拷貝到dom中與原來linux系統相對應的位置,再用gcc命令進行編譯的時候加上選項-static這樣就實現了靜態編譯。將編譯好的靜態文件拷入dom中,就可以運行了。

4 結束語

本文從完善高溫監測系統功能出發,分析了Linux、MiniGUI、多線程運用于高溫監測系統的諸多優點。并且該項目已經在高精數控“烤機”中應用,具有系統運行穩定,CPU運行效率顯著提高,監測系統容量大幅度增加,操作迅速簡潔,鼠標和鍵盤可以互相獨立進行操作。便于運用及修改程序,使其可以應用于類似的監測項目中,并對相關的應用具有一定的參考價值。

參考文獻:

[1] 魏永明,耿岳,鐘書毅,譯. Linux設備驅動程序[M]. 中國電力出版社,2006.

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

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

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

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

主站蜘蛛池模板: 天天色天天操综合网| 中文字幕在线观看日本| 亚洲三级色| 九九免费观看全部免费视频| 四虎永久免费地址在线网站| 自拍偷拍欧美日韩| 久久久国产精品免费视频| 国产一区二区丝袜高跟鞋| 在线亚洲精品自拍| 亚洲Va中文字幕久久一区| 国产99视频精品免费视频7| 亚洲aaa视频| a级毛片免费在线观看| 国产成人精品一区二区秒拍1o| 国产麻豆精品在线观看| 久久综合AV免费观看| 亚洲性影院| 亚洲精品色AV无码看| 五月婷婷导航| 97se亚洲综合| 亚洲高清无码精品| 91久久国产热精品免费| 国产精品午夜福利麻豆| 国产性精品| 成人欧美在线观看| 亚洲人成影院在线观看| 久久国产黑丝袜视频| 欧美三级日韩三级| 性视频久久| 欧美人与性动交a欧美精品| 激情综合网激情综合| 中文国产成人精品久久| 国产午夜精品鲁丝片| 欧美一区二区自偷自拍视频| 亚洲视频a| 国产欧美日韩精品第二区| 欧美成人第一页| 扒开粉嫩的小缝隙喷白浆视频| 久久人人97超碰人人澡爱香蕉| 日本免费a视频| 久久精品中文字幕少妇| аv天堂最新中文在线| 茄子视频毛片免费观看| 亚洲欧美一区二区三区蜜芽| 在线五月婷婷| 日韩国产黄色网站| 中文字幕不卡免费高清视频| 国产91丝袜在线播放动漫| 日本一本在线视频| 久久久久久久久久国产精品| 国产成人调教在线视频| 天天综合网色中文字幕| 美女内射视频WWW网站午夜 | 欧美97色| 亚洲欧美国产高清va在线播放| 99久久精品免费视频| 2024av在线无码中文最新| 国产视频自拍一区| AV不卡在线永久免费观看| 国产91无码福利在线| 91激情视频| 天天婬欲婬香婬色婬视频播放| 欧美另类视频一区二区三区| 一本二本三本不卡无码| 男人天堂亚洲天堂| 午夜日b视频| 国产成人综合日韩精品无码首页| 国产精品男人的天堂| 一级毛片在线免费看| 亚洲AV无码精品无码久久蜜桃| 永久在线播放| 精品伊人久久大香线蕉网站| 欧美亚洲一区二区三区导航| 日日噜噜夜夜狠狠视频| 亚洲经典在线中文字幕| 国产乱子伦视频在线播放| 国产屁屁影院| 亚洲熟女偷拍| 毛片基地视频| 日本久久久久久免费网络| 99ri精品视频在线观看播放| 亚洲第一色视频|