《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > 基于多線程的環境監控系統下位機的設計

基于多線程的環境監控系統下位機的設計

2017-05-11
關鍵詞: GUI 環境監控 多線程

  為提高環境監控系統的穩定性,節約系統資源,提出了一種由下位機、傳輸網絡和上位機組成的環境監控系統的設計方案,詳細介紹了該系統中下位機的硬件及軟件設計。該下位機硬件以ARM9處理器S3C2410為核心,軟件采用多線程應用程序同時處理多個任務,并采用信號量和互斥量實現線程間的同步。實際應用表明,該系統運行穩定,提高了系統效率。

  0引言

  隨著國民經濟及工業技術的發展,環境保護越來越受到重視?,F在市場上已經出現了多種環境監控系統,但性能不穩定?,F場監控終端大多采用工控機或單片機,前者抗干擾性能好,但成本較高;后者處理能力低,人機界面不友好,不利于現場人員的監控管理。針對上述問題,筆者設計了一種基于多線程的環境監控系統。該系統采用多線程技術有效地實現了監控過程中數據的采集與存儲、實時數據顯示、下位機(監控終端)與上位機(監控中心)的通信、實時報警等功能。本文重點介紹該系統下位機的設計。

  1系統總體結構

  基于多線程的環境監控系統由現場監控終端(下位機)、傳輸網絡、監控中心(上位機)3個部分組成,其結構如圖1所示。

53a3fc0c6c0c3-thumb.jpg

  圖1基于多線程的環境監控系統結構

  下位機是一個基于A RM9的嵌入式系統,用于定時采集、處理、存儲被監測的特征數據。經過下位機處理后的數據,按照相關協議,經GPRS模塊發送給上位機。上位機由一臺PC機擔任,負責接收多個下位機發送的數據,并對這些數據進行分析、處理和顯示。環保部門可通過上位機監控其轄區內的污染排放狀況。上位機基于VB. NET開發。

  2下位機硬件設計

  下位機的硬件核心部分由S3C2410、NandFLASH和SDRAM組成,如圖2所示。S3C2410是三星公司生產的一款基于ARM920T內核的32位RISC嵌入式微處理器,帶有獨立的16 KB指令Cache和16 KB數據Cache、LCD控制器、RAM控制器、N and FLASH控制器、并行I/ O口、8路10位ADC,其運行頻率可達203 MHz.8位64 MB的Nand FLASH選用的芯片為K9F1208, 64 MB的SDRAM由2片HY57V561620組成。下位機通過以太網控制器CS8900A擴展了一個網口,數據既可以通過無線傳輸,也可以通過有線傳輸;通過I/ O接口擴展了8個DI口(數字量輸入)、4個AI口(模擬量輸入)、4個DO口(數字量輸出),下位機通過這些接口與被監控設備通信。

53a3fbb3c622f-thumb.jpg

  圖2下位機硬件組成

  3下位機的需求與結構設計

  下位機定時采集、處理現場數據,并存儲在數據庫中,把實時數據發送給上位機,并響應上位機發送的控制命令。因此,下位機需要同時處理多個任務,這些任務并發執行。若使用單線程來完成這些任務,則需要使用多個定時器來觸發,而過多的定時器會導致系統不穩定。Window s是搶先式多任務的操作系統,啟動了一個應用程序就等于啟動了一個進程。一個進程通常擁有一個線程,在系統資源管理中,每一個線程被分配一定的時間片。采用多線程的設計方法可以使程序擁有多個線程,這樣程序就能同時處理更多的任務。因此,若使用多個進程來協作完成,能避免上述缺點且系統比較穩定,但系統對進程的頻繁調度會占用過多資源,程序的可讀性也不好。

  筆者采用一種并行的、多線程方案能夠很好地處理多個任務,并充分節約系統資源。該方案中,下位機有5個線程:GU I線程、復位線程、數據采集與存儲線程、網絡通信線程、決策線程。其中GU I線程為主線程,負責界面處理、系統數據的初始化以及創建子線程等任務;復位線程、數據采集與存儲線程、網絡通信線程是后臺的工作線程,通過優先級調度、線程同步等機制保證能可靠執行現場數據采集、存儲、發送、顯示等任務。復位線程在啟動后循環地對看門狗操作,不作為任務處理線程。任務線程之間的關系如圖3所示。

53a3fc0c0686d-thumb.jpg

  圖3任務線程之間的關系

  4多線程技術在系統中的應用

  4. 1線程的創建

  Linux環境下,使用pthread_cr eate()函數創建一個新線程,默認情況下主線程會等待被創建的子線程執行結束,得到子線程的返回結果然后再繼續往后執行。實時監控程序的子線程都是循環執行的,不需要運行結束后歸并到主線程中,需設置其屬性為PT HREAD _ CREATE _DETACHED.根據子線程的重要性進行優先級設置,確保重要線程優先執行。子線程的優先級從高到低依次為復位線程、數據采集與存儲線程、決策線程、網絡通信線程。

  線程的創建、設置偽代碼如下:

  void * thr ead_wat chdog(void * arg); / /復位線程函數

  void * thr ead_collect ion(void * arg); / /數據采集與存儲線程函數

  void * thr ead_communi cat ion(void * arg); / /網絡通信線程函數

  void * thr ead_decis e(void * arg); / /決策線程函數

  int dat a[ 12] ; / /數據緩沖區,用于存放線程間共享的數據函數

  main()

  {

  / /初始化工作

  ……

  pthread_t wat chd og; / /線程號

  pthread_t collect ion;

  pthread_t commun ication;

  pthread_t deci se;

  pthread_at t r_init(); / /初始化線程屬性

  pthread_at t r_setdetach st at e(); / /不對線程進行重新歸并

  pthread_at t r_set s ched param(); / /設置線程的優先級

  sem_init(); / /對相關信號量進行初始化

  pth read_creat e(); / /創建新線程

  / /啟動GUI程序

  ……

  }

  4. 2線程的同步機制

  同步機制是否合理是多線程應用程序運行是否穩定的關鍵。在程序設計時,需考慮到可能引起數據毀壞的多線程數據訪問沖突以及如何使用同步技術避免這種沖突。Linux操作系統實現同步機制的方法有信號量(semaphore)和互斥量(mutex),這兩種方法相似,但各有側重。信號量側重于一個線程被另一個線程激活,常有先后執行的關系。而互斥量則保護某一共享內存任一時刻只有一個線程訪問。網絡通信線程和數據采集與存儲線程之間的同步通過信號量來實現。

  為了防止系統資源泄漏,保持各個線程的同步,主線程需要初始化數據采集驅動代碼,為數據采集做好準備;申請相應的內存空間,用于存放采集到的實時數據;定義好各個信號量和互斥量。

  4. 3線程的實現方法

  數據采集與存儲線程是獲取數據的起始線程,由GU I線程創建,網絡通信線程和決策線程是由數據采集與存儲線程激活。下位機開始運行后,數據采集與存儲線程啟動,每隔5 s運行1次,讀DI、AI接口的狀態,并把這些狀態和此刻的時間存入SQ Lite數據庫中。數據采集與存儲線程每運行一次,對信號量sem_decise和sem_ com進行一次post操作,分別激活決策線程和網絡通信線程。數據采集與存儲線程的同步流程如圖4所示。

53a3fc66801ad-thumb.jpg

  圖4數據采集與存儲線程的同步流程

  數據采集與存儲線程作為系統的數據源頭,它激活了其它2個子線程,與之相對應,被激活的子線程隨著它的結束而結束。線程在未接受到信號量激活時處于阻塞狀態,不占用系統資源。前臺處理用戶界面的GUI線程與后臺的工作線程之間是獨立的。GU I線程提供友好的人機界面,它把被監控對象的信息實時顯示在圖形界面上,供現場工作人員查詢和設置。

  監控程序的每個線程都需要對存放被監控對象實時狀態的數據緩沖區進行訪問。由于Linux操作系統允許多個線程同時對某一數據緩沖區進行讀操作,但在同一時刻對該數據緩沖區只能有一個寫操作。GUI線程需要定時刷屏,更新被監控對象的實時狀態,因而需要定時對緩沖區進行讀操作,而數據采集與存儲線程定時地對該緩沖區進行寫操作,它們之間沒有觸發關系,是相互獨立運行的。因此,需要對緩沖區設置一個互斥量,確保任一時刻這兩個線程只有一個能對其進行訪問。

  數據采集與存儲線程對緩沖區進行寫操作之前,先對互斥量進行加鎖操作,把實時狀態寫入數據緩沖區后,再進行解鎖。這樣避免了因與GU I線程爭奪資源而造成系統不穩定的現象。上鎖與解鎖操作代碼如下:

  void * thr ead_collect ion(void * arg)

  {

  ……

  pthread_mu tex_lock(dat a_mu tex); / /上鎖操作

  read(fd, dat a, s izeof(dat a)); / /寫實時狀態到data緩沖區

  pthread_mu tex_unl ock(dat a_m ut ex); / /解鎖操作

  / /激活網絡通信線程、決策線程,并寫數據到數據庫

  ……

  }

  同樣,GUI線程中也需要對緩沖區進行相應的上鎖、解鎖操作。

  網絡通信線程和決策線程由GUI線程創建,由數據采集與存儲線程激活,都是每5 s運行1次。

  由于GPRS模塊通過串口與下位機相連,并采用透明傳輸模式,即有數據即傳輸,因此,網絡通信線程只需要定時對串口寫操作就可以完成數據傳輸任務。網絡通信線程先打開串口,設置串口的波特率、數據位、校驗位等屬性,然后等待數據采集與存儲線程的信號量將其激活,第一次被激活后,進入了一個w hile循環,執行一次串口寫操作,再等待下一次被激活。網絡通信線程被激活的條件是數據采集與存儲線程對信號進行了一次加1操作,即sem_ post(sem_2)。網絡通信線程的關鍵代碼如下:

  fd= open(“/ dev/ t t ySC4”, O_RDWR);

  set_sp eed(fd, 9 600); / /設置波特率

  set_parit y(fd, 8, 1, %n); / /設置數據位、奇偶校驗位

  sem_w ait(s em_2); / /等待信號量激活

  w h ile(1){

  w rit e(fd, buf , sizeof(buf)); / /對串口寫操作,發送數據

  sem_w ait(sem_2); / /等待下一次信號量激活

  }

  pth read_exit(“thread exit \ n”); / /線程退出

  決策線程的任務是對當前被監控對象的狀態進行判斷,如果有異常發生,則產生一個報警信號,并執行相關動作來應對這些異常。其代碼結構與網絡通信線程相似。

  5結語

  基于多線程的環境監控系統采用多線程技術完成下位機的多個任務,相對于單任務應用程序,多線程應用程序能夠減少定時器的使用,節約系統資源,從而提高系統效率。而且,多線程應用程序更能體現模塊化設計思想,程序易于維護和修改。該系統已經成功應用于多個項目之中,性能穩定可靠。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产欧美不卡| 国产日产精品一区二区三区四区的观看方式| 欧美精品在线观看播放| 欧美88av| 国产精品午夜在线观看| 国产精品免费视频观看| 欧美一级在线视频| 亚洲欧美一区二区三区在线| 久久综合伊人77777| 亚洲国产精品成人综合色在线婷婷| 久久久精品国产免费观看同学| 欧美a级片一区| 久久久久久亚洲综合影院红桃| 欧美激情综合网| 国产乱人伦精品一区二区| 亚洲麻豆国产自偷在线| 国产三区二区一区久久| 国产主播一区二区| 欧美一区二区三区免费视| 欧美日韩亚洲系列| 国产婷婷97碰碰久久人人蜜臀| 香港久久久电影| 91久久精品久久国产性色也91| 亚洲一区二区三区精品视频| 一本不卡影院| 亚洲精品日韩在线| 亚洲美女视频在线观看| 国产一区二区三区电影在线观看| 伊大人香蕉综合8在线视| 欧美精品一区二区三区在线播放| 亚洲国产欧洲综合997久久| 久久久免费观看视频| 久久av红桃一区二区小说| 久热国产精品视频| 国产精品欧美久久| 亚洲电影网站| 国产精品swag| 久久亚洲私人国产精品va媚药| 欧美大片va欧美在线播放| 久久久国产精品一区| 日韩一级网站| 欧美日韩亚洲综合在线| 欧美日韩精品欧美日韩精品| 欧美一级在线亚洲天堂| 亚洲激情婷婷| 亚洲欧美激情精品一区二区| 国产精品久久影院| 亚洲男女自偷自拍图片另类| 亚洲成人在线| 亚洲国产成人不卡| 久久夜精品va视频免费观看| 欧美特黄一级| 国产精品日韩在线一区| 国产精品福利影院| 9i看片成人免费高清| 欧美日本一区二区高清播放视频| 欧美激情第六页| 日韩天天综合| 欧美色欧美亚洲另类二区| 欧美成人xxx| 国产精品免费一区豆花| 久久久91精品国产一区二区精品| 伊人男人综合视频网| 狠狠色综合日日| 欧美日韩在线一区| 欧美在线播放高清精品| 欧美色精品在线视频| 亚洲天堂第二页| 国产精品久久久久免费a∨大胸| 99精品免费网| 欧美一区二区三区另类| 欧美日韩福利视频| 黄色成人在线免费| 99视频精品全部免费在线| 久久婷婷国产综合国色天香| 国产精品色网| 一区二区三区四区五区精品视频| 欧美日韩另类国产亚洲欧美一级| 欧美一区二区| 另类图片综合电影| 亚洲无限乱码一二三四麻| 激情五月***国产精品| 国产亚洲欧洲一区高清在线观看| 国产精品福利片| 欧美bbbxxxxx| 日韩午夜黄色| 中日韩美女免费视频网址在线观看| 久久久99精品免费观看不卡| 亚洲人成人99网站| 亚洲激情小视频| 久久电影一区| 国产日韩欧美在线观看| 亚洲欧洲精品一区二区三区不卡| 国产在线精品一区二区中文| 欧美成人午夜剧场免费观看| 曰本成人黄色| 久久成人在线| 亚洲大胆在线| 国产精品一区二区你懂的| 亚洲免费在线视频| 亚洲国产精品久久久久秋霞影院| 欧美天天视频| 日韩一级成人av| 国内精品久久久久久久影视麻豆| 欧美三级电影一区| 99ri日韩精品视频| 国产嫩草一区二区三区在线观看| 亚洲欧美另类综合偷拍| 先锋影音国产一区| 国产欧美一区二区在线观看| 国产精品普通话对白| 国产精品国产三级国产普通话99| 亚洲欧美日韩精品久久| 国产精品日本一区二区| 欧美日本国产一区| 国产精品热久久久久夜色精品三区| 国产亚洲精品久久久久动| 国产精品久久午夜| 欧美成人一区在线| 国产精品自拍网站| 欧美日韩视频在线一区二区观看视频| 欧美在线看片a免费观看| 99精品热视频只有精品10| 欧美一区深夜视频| 久久蜜桃香蕉精品一区二区三区| 欧美国产精品中文字幕| 欧美一区二区国产| 亚洲乱码日产精品bd| 国产乱理伦片在线观看夜一区| 久久精品成人欧美大片古装| 亚洲国产日韩欧美| 欧美二区不卡| 一本久久精品一区二区| 国产在线拍揄自揄视频不卡99| 一区二区三区在线观看视频| 亚洲高清在线观看一区| 久久精品99久久香蕉国产色戒| 亚洲影院免费| 欧美日韩一区二区免费在线观看| 亚洲自拍高清| 欧美国产日韩在线| 亚洲美女黄网| 欧美天天视频| 欧美揉bbbbb揉bbbbb| 欧美在线播放高清精品| 亚洲高清资源| 国产精品成人va在线观看| 亚洲视频免费在线观看| 久久国产精品久久国产精品| 亚洲影音先锋| 国产在线观看一区| 国产精品美女久久久浪潮软件| 欧美成人精品激情在线观看| 亚洲国产精品成人精品| 欧美国产综合视频| 欧美精品免费在线| 国产亚洲成av人片在线观看桃| 久久99在线观看| 久久男人资源视频| 欧美成人在线网站| 亚洲日本电影| 国产午夜精品理论片a级大结局| 久久久亚洲高清| 国产精品久久久久国产精品日日| 国产精品啊v在线| 亚洲精品国产精品乱码不99按摩| 久久精品成人一区二区三区| 好吊色欧美一区二区三区四区| 欧美精品自拍偷拍动漫精品| 在线亚洲电影| 亚洲欧美日韩国产综合在线| 日韩午夜av| 久久蜜桃香蕉精品一区二区三区| 午夜精品久久久久久99热软件| 一区二区三区国产精华| 欧美顶级艳妇交换群宴| 久久久精品动漫| 在线成人www免费观看视频| 亚洲国产精品www| 国产一区二区三区观看| 美国十次成人| 欧美大色视频| 亚洲第一区在线观看| 欧美一区二视频| 国产欧美亚洲日本| 在线视频一区二区| 亚洲欧美在线观看| 欧美激情小视频| 欧美另类视频在线| 国产精品乱码一区二区三区| 午夜久久一区| 欧美jizzhd精品欧美喷水| 久久在精品线影院精品国产| 国产伦一区二区三区色一情| 卡一卡二国产精品| 欧美一乱一性一交一视频| 欧美亚韩一区| 亚洲大胆女人| 在线欧美日韩精品| 亚洲国产精品激情在线观看| 免费久久久一本精品久久区| 久久久精品国产一区二区三区| 久久尤物电影视频在线观看| 亚洲视频欧美在线| 精品二区视频| 性视频1819p久久| 欧美午夜片欧美片在线观看| 性欧美videos另类喷潮| 国内精品久久久久久久影视麻豆| 欧美日韩国产综合视频在线| 欧美大成色www永久网站婷| 性一交一乱一区二区洋洋av| 亚洲自拍偷拍网址| 在线日韩欧美| 国产亚洲视频在线| 在线精品观看| 国产精品啊啊啊| 欧美日韩一级视频| 国产精品理论片在线观看| 99热这里只有精品8| 欧美国产日韩xxxxx| 国产精品日日做人人爱| 欧美三级日韩三级国产三级| 欧美一级日韩一级| 欧美激情在线播放| 国产精品jizz在线观看美国| 免费久久精品视频| 久久久之久亚州精品露出| 国产喷白浆一区二区三区| 久久免费视频这里只有精品| 9l视频自拍蝌蚪9l视频成人| 欧美日韩一区二区三区在线看| 欧美在线播放视频| 国产亚洲精品美女| 亚洲女同性videos| 最新国产精品拍自在线播放| 国产综合色精品一区二区三区| 日韩天天综合| 欧美视频免费看| 欧美日韩在线第一页| 亚洲欧美日韩综合| 亚洲免费一在线| 尤物九九久久国产精品的特点| 亚洲国产黄色| 国产精品久久久久一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品视频精品视频| 蜜桃av一区二区三区| 欧美激情视频免费观看| 久久久噜噜噜久久人人看| 亚洲一区视频在线观看视频| 亚洲人成人一区二区三区| 中日韩在线视频| 久久精品视频在线免费观看| 久久国产一区二区| 久久国产精品一区二区| 免费久久99精品国产自| 国产精品久久久久久av下载红粉| 国产精品第三页| 激情av一区二区| 99国产麻豆精品| 亚洲欧美日韩国产一区二区三区| 欧美日韩高清在线一区| 一本一本久久a久久精品综合妖精| 国产精品v欧美精品v日韩精品| 亚洲一区区二区| 欧美天天在线| 亚洲婷婷国产精品电影人久久| 亚洲欧美成人| 欧美激情一区二区三区在线视频观看| 欧美在线精品一区| 欧美区二区三区| 男人的天堂亚洲在线| 欧美精品日韩三级| 狠狠色综合播放一区二区| 另类成人小视频在线| 欧美日韩在线一区二区| 你懂的一区二区| 久久久欧美精品| 嫩草影视亚洲| 亚洲黄色小视频| 91久久精品国产91性色| 国产精品久久久久久久一区探花| 亚洲区国产区| 国产精品永久入口久久久| 日韩视频在线免费| 欧美午夜一区二区三区免费大片| 欧美一区二区三区视频免费播放| 亚洲国产专区| 欧美精品三级日韩久久| 亚洲视频在线二区| 国产一区观看| 国产精品久久激情| 亚洲国产你懂的| 亚洲视频中文字幕| 久热精品在线视频| 国产精品网站视频| 亚洲风情亚aⅴ在线发布| 国产精品网红福利| 国产精品欧美精品| 亚洲已满18点击进入久久| 中文在线资源观看网站视频免费不卡| 国产精品理论片| 在线观看视频一区二区| 久久久久久久久久久一区| 亚洲视频在线观看网站| 在线观看一区二区精品视频| 国产偷自视频区视频一区二区| 国产精品麻豆欧美日韩ww| 国产毛片一区二区| 午夜精品视频| 亚洲黄色尤物视频| 亚洲国产精品久久久久婷婷884| 国产一区二区日韩精品欧美精品| 在线日本高清免费不卡| 欧美一区二区三区四区在线观看| 亚洲一区二区日本| 一本久久知道综合久久| 国产精品理论片| 亚洲一级片在线看| 国产香蕉97碰碰久久人人| 国产一区二区黄| 久久久久久久国产| 亚洲欧洲精品一区二区三区不卡| 91久久精品国产91久久性色tv| 在线成人性视频| 亚洲激情第一页| 亚洲精选久久|