色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于QNX實(shí)時(shí)操作系統(tǒng)的圖形控制界面設(shè)計(jì)

          基于QNX實(shí)時(shí)操作系統(tǒng)的圖形控制界面設(shè)計(jì)

          作者: 時(shí)間:2009-12-18 來源:網(wǎng)絡(luò) 收藏

            為每個(gè)控件提供十余種程序調(diào)用方式,常用到的有按下調(diào)用(Armed)、點(diǎn)擊調(diào)用(Activated,點(diǎn)擊為一個(gè)在同一控件上按下然后松開的過程)、熱鍵調(diào)用(Hotkey)和鼠標(biāo)右鍵按下調(diào)用(Menu)等,系統(tǒng)默認(rèn)它們分別調(diào)用Pt_CB_ARM、Pt_CB_ACTIVATE、Pt_CB_HOTKEY和Pt_CB_MENU函數(shù),如果需要調(diào)用自定義的函數(shù),可以直接在提供的對(duì)話框中輸入需調(diào)用的函數(shù)名和所在文件。當(dāng)觸發(fā)的事件是顯示一個(gè)窗口或?qū)υ捒驎r(shí),還可以指定調(diào)用是在窗口構(gòu)建之前還是之后。
          2.2 程序設(shè)計(jì)
             Momentics IDE支持C/C++語言對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),并且兼容C++標(biāo)準(zhǔn)模板庫(kù)(STL),熟練的C/C++程序員可以很快地掌握在 Momentics IDE中進(jìn)行程序編寫的技巧。值得一提的是,在集成開發(fā)環(huán)境下對(duì)界面系統(tǒng)的主程序進(jìn)行編寫并不用直接對(duì)main()函數(shù)進(jìn)行編輯,而是將編寫的程序掛載到main()函數(shù)中,并可以選擇程序是在界面生成前運(yùn)行還是之后運(yùn)行。系統(tǒng)主程序的方框圖如圖2所示。

            在程序運(yùn)行時(shí),預(yù)處理命令先于生成界面部分執(zhí)行,它與系統(tǒng)初始化及以后的程序不在同一個(gè)編寫的函數(shù)中,但都是main( )函數(shù)的一部分。讀取并顯示狀態(tài)信號(hào)部分程序在執(zhí)行中會(huì)自動(dòng)檢測(cè)信號(hào)所標(biāo)識(shí)狀態(tài)是否達(dá)到或超過警報(bào)值和危險(xiǎn)值,當(dāng)讀取到警報(bào)值信號(hào)時(shí),系統(tǒng)將自動(dòng)發(fā)出報(bào)警;存在危險(xiǎn)值信號(hào)時(shí),系統(tǒng)將按編寫的程序自動(dòng)處理。
            在系統(tǒng)運(yùn)行時(shí),需要同時(shí)進(jìn)行多項(xiàng)運(yùn)算。如對(duì)某個(gè)閥發(fā)出開閥的命令時(shí),系統(tǒng)不僅要顯示需更改閥圖標(biāo)的變換(以標(biāo)識(shí)該閥正在進(jìn)行相關(guān)操作),還要進(jìn)行數(shù)據(jù)采集、邏輯運(yùn)算等。若此時(shí)某項(xiàng)指標(biāo)達(dá)到警戒值,還要能及時(shí)進(jìn)行相關(guān)處理。因此,除了應(yīng)用中斷的方式提高程序運(yùn)行效率外,還有必要進(jìn)行多線程編程。
          QNX為多線程編程提供了豐富的函數(shù)。如線程創(chuàng)建函數(shù)pthread_create( )、ThreadCreate_r( )和ThreadCreated( ),線程終止函數(shù)pthread_exit( )、ThreadDestroy( )和Thread
          Destroy_r( )等。當(dāng)然,各個(gè)函數(shù)的使用有差別,以線程創(chuàng)建函數(shù)為例,相比于pthread_create( )函數(shù),ThreadCreate_r( )和ThreadCreated( )都是從內(nèi)核直接創(chuàng)建線程,并且它們的使用方法很相似,ThreadCreate_r( )函數(shù)與ThreadCreated( )函數(shù)的唯一區(qū)別在于創(chuàng)建線程出錯(cuò)時(shí)的返回值不同。下面是系統(tǒng)中用pthread_create( )函數(shù)創(chuàng)建的一個(gè)信號(hào)處理線程:


            在多線程程序的編寫過程中,需要使用互斥體來保護(hù)線程的數(shù)據(jù)訪問,以保證公共數(shù)據(jù)不被其他線程修改破壞。在QNX中,可以使用函數(shù)pthread_mutex_init( )來創(chuàng)建一個(gè)互斥體,使用函數(shù)pthread_mutex_lock( )和pthread_mutex_unlo
            ck( )來鎖住一個(gè)互斥體和為一個(gè)互斥體解鎖。
            本系統(tǒng)運(yùn)行的硬件平臺(tái)為一臺(tái)SBS公司的VP9 6U VME Single Board Computer,一塊由Acromag公司生產(chǎn)的AVME9668 VME bus 6U Non-intelligent IP Carrrier Cards和IP408 High Voltage Digital Input/Output信號(hào)采集模塊,單板機(jī)和信號(hào)采集卡都插在VME64x總線協(xié)議的6U標(biāo)準(zhǔn)機(jī)箱中運(yùn)行。長(zhǎng)時(shí)間的調(diào)試運(yùn)行表明,本文所設(shè)計(jì)的QNX的圖形控制軟件運(yùn)行穩(wěn)定、可靠,實(shí)現(xiàn)了系統(tǒng)功能,達(dá)到了既定要求。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉