基于ARM7多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)_第1頁(yè)
基于ARM7多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)_第2頁(yè)
基于ARM7多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)_第3頁(yè)
基于ARM7多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)_第4頁(yè)
基于ARM7多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 物理與電子工程學(xué)院 嵌入式系統(tǒng)與應(yīng)用設(shè)計(jì)性實(shí)驗(yàn)報(bào)告 題目 基于ARM7的多通道儀表數(shù)據(jù)采集實(shí)驗(yàn) 系 別 物理與電子工程學(xué)院 年 級(jí) 09 級(jí) 專 業(yè) 電子信息工程 班 級(jí) 1 學(xué) 號(hào) 160409210 學(xué)生姓名 師 駿 指導(dǎo)教師 浦 煒 實(shí)驗(yàn)時(shí)間 2012 .11 目 錄引言2一 課題內(nèi)容及目的3二 課題分析3三 系統(tǒng)設(shè)計(jì)4四 代碼分析8五 實(shí)驗(yàn)結(jié)果10六 實(shí)驗(yàn)總結(jié)10參考文獻(xiàn)12附 錄13設(shè)計(jì)性實(shí)驗(yàn)報(bào)告成績(jī): 指導(dǎo)教師簽名:23引言在實(shí)際應(yīng)用中,常常需要對(duì)現(xiàn)場(chǎng)的設(shè)備進(jìn)行監(jiān)測(cè),通過(guò)采集設(shè)備的運(yùn)行參數(shù)隨時(shí)了解、跟蹤設(shè)備運(yùn)行狀態(tài),進(jìn)而對(duì)設(shè)備進(jìn)行分析和診斷。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)一般采用PC 加數(shù)據(jù)

2、采集卡,主要做法是將一塊基于IAS 或PCI的板卡插入工業(yè)計(jì)算機(jī)或商用機(jī)上,將外部信號(hào)通過(guò)導(dǎo)線引至計(jì)算機(jī),然后接入數(shù)據(jù)采集卡,通過(guò)定制的軟件進(jìn)行采集。但是采用數(shù)據(jù)采集卡的缺點(diǎn)是安裝麻煩、易受機(jī)箱內(nèi)環(huán)境的干擾,而且由于受計(jì)算機(jī)插槽數(shù)量和位置、中斷資源的限制,不可能掛接很多設(shè)備。從未來(lái)的發(fā)展方向上看,數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)采集部分應(yīng)朝著強(qiáng)實(shí)時(shí)、多參數(shù)、高精度方向發(fā)展;數(shù)據(jù)存儲(chǔ)部分朝著大容量、微型化、便攜式方向發(fā)展;數(shù)據(jù)傳輸部分朝著多通訊方式、遠(yuǎn)距離數(shù)據(jù)傳輸方向發(fā)展。一般的基于單任務(wù)順序機(jī)制的單片機(jī)數(shù)據(jù)采集系統(tǒng)又很難勝任對(duì)于穩(wěn)定性、實(shí)時(shí)性要求很高的場(chǎng)合?;诖?,本設(shè)計(jì)了一種基于ARM7 處理器,采用了串

3、口、USB、以太網(wǎng)3 種與PC 機(jī)的通訊方式,以適應(yīng)不同場(chǎng)合的需要。采用多任務(wù)編程方法,每個(gè)任務(wù)監(jiān)視一路AD 轉(zhuǎn)換, 每一路AD 的轉(zhuǎn)換結(jié)果在液晶屏上用一個(gè)條形圖的長(zhǎng)短來(lái)表示,直觀地顯示每路模擬輸入電壓的大小??梢酝ㄟ^(guò)文本框給每路AD 設(shè)置警戒值,某路輸入超出警戒線之后條形圖中超出的部分會(huì)以閃動(dòng)的方式顯示。一 課題內(nèi)容及目的采用多任務(wù)編程方法,每個(gè)任務(wù)監(jiān)視一路AD 轉(zhuǎn)換, 每一路AD 的轉(zhuǎn)換結(jié)果在液晶屏上用一個(gè)條形圖的長(zhǎng)短來(lái)表示,直觀地顯示每路模擬輸入電壓的大小。可以通過(guò)文本框給每路AD 設(shè)置警戒值,某路輸入超出警戒線之后條形圖中超出的部分會(huì)以閃動(dòng)的方式顯示。并在數(shù)碼管上對(duì)應(yīng)的某通道的數(shù)值顯示

4、當(dāng)超過(guò)警戒線數(shù)值時(shí),數(shù)字閃爍顯示。二 課題分析數(shù)據(jù)采集系統(tǒng)置于被監(jiān)控的設(shè)備處,通過(guò)傳感器對(duì)設(shè)備的電壓或者電流信號(hào)進(jìn)行采樣、保持,并送入A/D轉(zhuǎn)換器變成數(shù)字信號(hào),然后將該信號(hào)送到FIFO中。當(dāng)FIFO中存放的數(shù)據(jù)到了一定數(shù)目時(shí),由ARM7從FIFO中讀出,然后通過(guò)ARM7的以太網(wǎng)接口送給上位機(jī)。多路采集通道經(jīng)過(guò)模擬開(kāi)關(guān)后再進(jìn)入A/D轉(zhuǎn)換器。CPLD是整個(gè)系統(tǒng)的控制核心,它控制采集通道的切換、A/D轉(zhuǎn)換器的啟/停、轉(zhuǎn)換后的數(shù)據(jù)在FIFO中的存放地址發(fā)生器、產(chǎn)生中斷請(qǐng)求以通知ARM7讀取存放在FIFO中的數(shù)據(jù)等。三 系統(tǒng)設(shè)計(jì)1編寫(xiě)OnKey()函數(shù),響應(yīng)鍵盤(pán)消息。流程圖如圖1所示。1) 這里設(shè)置了兩

5、個(gè)文本框,用來(lái)輸入通道編號(hào)和該通道的警戒值,在鍵盤(pán)消息響應(yīng)函數(shù)里針對(duì)兩個(gè)文本框分別作出處理,只處理回車(chē)鍵和取消鍵,其他鍵由控件本身處理。程序里用變量EditNumber 指示當(dāng)前要編輯的文本框控件;用變量input 指示該文本框控件是否處于輸入編輯狀態(tài)。以此決定回車(chē)鍵應(yīng)該執(zhí)行的功能。 2)當(dāng)文本框控件不是編輯狀態(tài)時(shí),回車(chē)將使其進(jìn)入編輯狀態(tài),在程序里用SetWndCtrlFocus( )函數(shù)將焦點(diǎn)轉(zhuǎn)移到該控件并用SetTextCtrlEdit() 函數(shù)設(shè)置為編輯狀態(tài);當(dāng)文本框正處于編輯狀態(tài)時(shí),回車(chē)將使其退出編輯狀態(tài),并將要編輯的文本框切換到另一個(gè)文本框控件,取消鍵的處理和這種情況類似。 3) 如

6、果當(dāng)前要編輯的文本框是警戒值輸入框,在編輯狀態(tài)中回車(chē)確定后,所輸入的通道編號(hào)以及警戒值就會(huì)保存在數(shù)組WarnningData 中,代碼如下: WarnningData Unicode2Int(pChannelTextCtrl->text)=Unicode2Int(pValueTe xtCtrl->text); 圖12編寫(xiě)繪圖顯示任務(wù)Display_Task, 繪制文本框和條形圖等,并實(shí)現(xiàn)文本框編輯過(guò)程中和超過(guò)警戒值后的動(dòng)畫(huà)顯示,其流程圖為圖2所示。圖21)程序中用TextOut()函數(shù)顯示文本框的提示信息,用數(shù)組edit 記錄兩個(gè)文本框是否處于編輯狀態(tài),用變量IsEdit 指示提示

7、信息是否顯示。實(shí)際上,IsEdit這個(gè)變量在顯示任務(wù)循環(huán)一次就改變一次狀態(tài),當(dāng)IsEdit=1 時(shí)將提示信息擦掉,否則保持顯示不變。這就是閃爍顯示的原理,表示AD 轉(zhuǎn)換結(jié)果的條形圖超出警戒值的部分的閃爍也是這樣實(shí)現(xiàn)的,隨著任務(wù)的循環(huán)隔次的改變狀態(tài)。 2)和變量IsEdit 的作用類似,warnningx是條形圖閃爍的指示變量。當(dāng)某路AD 轉(zhuǎn)換的結(jié)果result_ADx 大于對(duì)應(yīng)通道的警戒值Warnni ngDatax時(shí),根據(jù)warnningx 的值決定條形圖的長(zhǎng)度是和result_ADx 對(duì)應(yīng)還是和W arnningDatax對(duì)應(yīng),這樣看起來(lái)?xiàng)l形圖的長(zhǎng)度是變化的,效果就是超過(guò)警戒線的那部分在閃

8、爍。 3)這里條形圖實(shí)際上是一個(gè)實(shí)心矩形,用FillRect()函數(shù)填充。 5、編寫(xiě)4 路AD 采集任務(wù)ADx_Task。1)使用GetADresult()函數(shù)即可得到某路AD 輸出的二進(jìn)制代碼。由于處理器的8路10 位AD 轉(zhuǎn)換單元的最大輸入電壓是2.50V,所以實(shí)際電壓值就是result_ADx=GetADresult(x)*2.50/1024;四 代碼分析增加數(shù)碼管顯示功能的代碼如下:ZLG7289_ENABLE();Delay(5);flah_flag=0xff; WriteSDIO(ZLG7289_CMD_DATA0|0);WriteSDIO(unsigned char)result

9、_AD0%10);Delay(1);WriteSDIO(ZLG7289_CMD_DATA0|1);WriteSDIO(0x80|(unsigned char)result_AD0/10);Delay(1);if(warnning0=1) flah_flag&=0xfc;WriteSDIO(ZLG7289_CMD_DATA0|2);WriteSDIO(unsigned char)result_AD1%10);Delay(1);WriteSDIO(ZLG7289_CMD_DATA0|3);WriteSDIO(0x80|(unsigned char)result_AD1/10);Delay(

10、1);if(warnning1=1) flah_flag&=0xf3;WriteSDIO(ZLG7289_CMD_DATA0|4);WriteSDIO(unsigned char)result_AD2%10);Delay(1);WriteSDIO(ZLG7289_CMD_DATA0|5);WriteSDIO(0x80|(unsigned char)result_AD2/10);Delay(1);if(warnning2=1) flah_flag&=0xcf;WriteSDIO(ZLG7289_CMD_DATA0|6);WriteSDIO(unsigned char)result

11、_AD3%10);Delay(1);WriteSDIO(ZLG7289_CMD_DATA0|7);WriteSDIO(0x80|(unsigned char)result_AD3/10);Delay(1);if(warnning3=1) flah_flag&=0x3f;WriteSDIO(ZLG7289_CMD_HIDE);WriteSDIO(255);Delay(1);WriteSDIO(ZLG7289_CMD_FLASH);WriteSDIO(flah_flag);Delay(1);首先先對(duì)數(shù)碼管顯示標(biāo)志進(jìn)行初始化,全設(shè)為“1”,然后通過(guò)WriteSDIO函數(shù)顯示第一、第二兩個(gè)數(shù)碼

12、管,數(shù)碼管一位個(gè)位,數(shù)碼管二為十位,并且0x80顯示小數(shù)點(diǎn)。當(dāng)通路的顯示值超過(guò)警戒值時(shí),通過(guò)flah_flag&=0xfc還是0xfc,即數(shù)碼管一二設(shè)為“0”,兩管開(kāi)始閃爍。以此類推,設(shè)置其余的四個(gè)數(shù)碼管。五 實(shí)驗(yàn)結(jié)果 通過(guò)設(shè)置開(kāi)發(fā)板上兩個(gè)文本框,用來(lái)輸入通道編號(hào)和該通道的警戒值,在鍵盤(pán)消息響應(yīng)函數(shù)里針對(duì)兩個(gè)文本框分別作出處理,只處理回車(chē)鍵和取消鍵,通過(guò)按回車(chē)鍵使文本框進(jìn)入或退出編輯狀態(tài)。假設(shè)設(shè)通路1的警戒值為10,那么當(dāng)1路超出警戒線10之后條形圖中超出的部分會(huì)以閃動(dòng)的方式顯示,并在數(shù)碼管上對(duì)應(yīng)的通道1的數(shù)值顯示當(dāng)大于10時(shí),數(shù)字閃爍顯示。六 實(shí)驗(yàn)總結(jié)不知不覺(jué)已經(jīng)到了做設(shè)計(jì)性實(shí)驗(yàn)的時(shí)

13、候的,這次我選的是基于ARM7的多通道儀表數(shù)據(jù)采集實(shí)驗(yàn),因?yàn)槲仪懊鎺讉€(gè)都是做的ARM7的實(shí)驗(yàn),所以我想選擇基于ARM7的多通道儀表數(shù)據(jù)采集實(shí)驗(yàn)應(yīng)該會(huì)比較的容易吧,不過(guò)我還是有點(diǎn)擔(dān)心,因?yàn)橐粋€(gè)人想把一個(gè)設(shè)計(jì)性的實(shí)驗(yàn)完全做完,是不太容易的,之前的實(shí)驗(yàn)都是按照老師的視頻做的,而這次實(shí)驗(yàn)只有老師給的實(shí)驗(yàn)要求,其他的東西都需要自己獨(dú)立操作完成,所以我們必須要將前面所掌握的知識(shí)融會(huì)貫通,并靈活運(yùn)用,這樣才能把這次實(shí)驗(yàn)做完。首先按照的實(shí)驗(yàn)要求,我開(kāi)始在網(wǎng)上找資料,然后和做這個(gè)實(shí)驗(yàn)的同學(xué)討論,終于有了一個(gè)比較的明確的思路,可是真正做的時(shí)候并不是那么簡(jiǎn)單的,總是遇到這樣那樣的問(wèn)題,遇到問(wèn)題就要解決,這就要自己的

14、實(shí)力,終于經(jīng)過(guò)自己不懈的努力,終于把程序中的錯(cuò)誤都改正過(guò)來(lái)了。這次實(shí)驗(yàn)使我明白了很多,光會(huì)有理論知識(shí)是不行的,我們要把理論知識(shí)和實(shí)踐結(jié)合起來(lái),這樣才發(fā)揮了理論知識(shí)的用途。做實(shí)驗(yàn)的時(shí)候不能太急躁,要慢慢來(lái),凡事都不能一氣呵成的,都要經(jīng)歷一定的過(guò)程,途中總會(huì)遇到一些問(wèn)題,遇到問(wèn)題我們不能退縮,要勇敢面對(duì),用自己的實(shí)力解決他,這樣我們才會(huì)成長(zhǎng)。參考文獻(xiàn)1 田澤. 嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用教程M . 北京:北京航空航天大學(xué)出版社,2005.32 周立功. ARM 嵌入式系統(tǒng)基礎(chǔ)教程M . 北京:北京航空航天大學(xué)出版社,2005.3 吳明暉. 基于ARM 的嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用M . 北京:人民郵電出版社,

15、2004.附 錄實(shí)驗(yàn)代碼main.c#include".ucos-iiincludes.h" /* uC/OS interface */#include ".ucos-iiaddosaddition.h"#include ".incdrv.h"#include <string.h>#include".incdrvad.h"#include "Zlg7289.h"#include "uhal.h"#include "44b.h"#pragma i

16、mport(_use_no_semihosting_swi) / ensure no functions that use semihosting extern int Zlg7289SIOBand;extern int Zlg7289SIOCtrl;#define ID_ChannelTextCtrl 101#define ID_ValueTextCtrl 102#define Draw_Wnd_ID 104PTextCtrl pChannelTextCtrl,pValueTextCtrl;float result_AD0,result_AD1,result_AD2,result_AD3;i

17、nt WarnningData4=33,33,33,33;int edit2=0,0;int flah_flag; /*任務(wù)定義*/OS_STK Main_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void Main_Task(void *Id); /Main_Test_Task#define Main_Task_Prio 12OS_STK Display_Task_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void Display_Task(void *Id); /Main_Test_Task#define Displa

18、y_Task_Prio 20OS_STK AD0_Task_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void AD0_Task(void *Id); /Main_Test_Task#define AD0_Task_Prio 21OS_STK AD1_Task_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void AD1_Task(void *Id); /Main_Test_Task#define AD1_Task_Prio 22OS_STK AD2_Task_StackSTACKSIZE*8=0, ; /Main_Test

19、_Task堆棧void AD2_Task(void *Id); /Main_Test_Task#define AD2_Task_Prio 23OS_STK AD3_Task_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void AD3_Task(void *Id); /Main_Test_Task#define AD3_Task_Prio 24/*已經(jīng)定義的OS任務(wù)*tcp監(jiān)控任務(wù)11以太網(wǎng)物理層監(jiān)控任務(wù)8觸摸屏任務(wù)9鍵盤(pán)任務(wù)10lcd刷新任務(wù)59系統(tǒng)任務(wù)1/*事件定義*/OS_EVENT *Nand_Rw_Sem; /Nand_Flash讀寫(xiě)控制權(quán)旗語(yǔ)OS_

20、EVENT *Uart_Rw_Sem; /Uart讀寫(xiě)控制權(quán)旗語(yǔ)void initOSGUI()/初始化操作系統(tǒng)的圖形界面initOSMessage();initOSList();initOSDC();initOSCtrl();initOSFile();int main(void)ARMTargetInit(); /開(kāi)發(fā)板初始化OSInit(); /操作系統(tǒng)初始化Zlg7289_Reset();uHALr_ResetMMU();/復(fù)位MMULCD_Init(); /初始化LCD模塊LCD_printf("LCD initialization is OKn");/向液晶屏輸出

21、數(shù)據(jù)LCD_printf("320 x 240 Text Moden");initOSGUI();/初始化圖形界面LoadFont();/調(diào)Unicode字庫(kù)LoadConfigSys();/使用config.sys文件配置系統(tǒng)設(shè)置LCD_printf("Create task on uCOS-II.n");OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ 創(chuàng)建系統(tǒng)任務(wù)OSTaskCreate(Display_Task,

22、(void *)0, (OS_STK *)&Display_Task_StackSTACKSIZE-1, Display_Task_Prio);/ 20OSTaskCreate(AD0_Task,(void *)0, (OS_STK *)&AD0_Task_StackSTACKSIZE-1, AD0_Task_Prio);OSTaskCreate(AD1_Task,(void *)0, (OS_STK *)&AD1_Task_StackSTACKSIZE-1, AD1_Task_Prio);OSTaskCreate(AD2_Task,(void *)0, (OS_STK

23、 *)&AD2_Task_StackSTACKSIZE-1, AD2_Task_Prio);OSTaskCreate(AD3_Task,(void *)0, (OS_STK *)&AD3_Task_StackSTACKSIZE-1, AD3_Task_Prio);OSAddTask_Init();/創(chuàng)建系統(tǒng)附加任務(wù)LCD_printf("Starting uCOS-II.n");LCD_printf("Entering graph mode.n");LCD_ChangeMode(DspGraMode);/變LCD顯示模式為文本模式Init

24、Rtc();/初始化系統(tǒng)時(shí)鐘Nand_Rw_Sem=OSSemCreate(1);/創(chuàng)建Nand-Flash讀寫(xiě)控制權(quán)旗語(yǔ),初值為1滿足互斥條件/OSStart();/操作系統(tǒng)任務(wù)調(diào)度開(kāi)始return 0;U8 onKey(int nkey, int fnkey)static BOOLEAN input=FALSE;static int EditNumber=1;if(EditNumber=1)switch(nkey)case 14:/OKif(!input)SetWndCtrlFocus(NULL, ID_ChannelTextCtrl);pChannelTextCtrl->text0

25、=0; /清空文本框SetTextCtrlEdit(pChannelTextCtrl, TRUE);DrawTextCtrl(pChannelTextCtrl);input=TRUE;edit0=1;elseSetTextCtrlEdit(pChannelTextCtrl, FALSE);DrawTextCtrl(pChannelTextCtrl);input=FALSE;edit0=0;EditNumber=2;return TRUE;case 16:/CancelSetTextCtrlEdit(pChannelTextCtrl, FALSE);input=FALSE;edit0=0;Edi

26、tNumber=2;return TRUE;else if(EditNumber=2)switch(nkey)case 14:/OKif(!input)SetWndCtrlFocus(NULL, ID_ValueTextCtrl);pValueTextCtrl->text0=0; /清空文本框SetTextCtrlEdit(pValueTextCtrl, TRUE);DrawTextCtrl(pValueTextCtrl);input=TRUE;edit1=1;elseSetTextCtrlEdit(pValueTextCtrl, FALSE);DrawTextCtrl(pValueTe

27、xtCtrl);input=FALSE;edit1=0;EditNumber=1;WarnningData Unicode2Int(pChannelTextCtrl->text)=Unicode2Int(pValueTextCtrl->text);return TRUE;case 17:/CancelSetTextCtrlEdit(pValueTextCtrl, FALSE);DrawTextCtrl(pValueTextCtrl);input=FALSE;edit1=0;EditNumber=1;return TRUE;return FALSE;void Main_Task(vo

28、id *Id) /Main_Test_TaskPOSMSG pMsg;init_ADdevice(20,ADCCON_SLEEP);for(;)POS_Ctrl pCtrl;pMsg=WaitMessage(0);if(pMsg->pOSCtrl)if(pMsg->pOSCtrl->CtrlMsgCallBk)(*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg);elseswitch(pMsg->Message)case OSM_KEY:pCtrl=GetCtrlfromID(NULL, GetWndCtrlFocus(NULL);if

29、(pCtrl->CtrlType=CTRLTYPE_WINDOW)if(PWnd)pCtrl)->style&WND_STYLE_MODE)=WND_STYLE_MODE)/焦點(diǎn)是有模式窗口,消息直接傳遞過(guò)去OSOnSysMessage(pMsg);break;if(onKey(pMsg->WParam,pMsg->LParam) )break;default:OSOnSysMessage(pMsg);break;DeleteMessage(pMsg);OSTimeDly(200);void Display_Task(void * Id) /Main_Test_

30、TaskPDC pdc;structRECT ChannelTextCtrl_Rect,ValueTextCtrl_Rect,Draw_Wnd_Rect;char Channel_Caption_810="Channel:"char Value_Caption_810="Value:"char Draw_Wnd_Caption_8="Draw Window"char vol_8="Vol"char chn_8="Chn"char chn0_8="0"char chn1_8=&

31、quot;1"char chn2_8="2"char chn3_8="3"char vol_10_8="10"char vol_20_8="20"char vol_30_8="30"u16 Channel_Caption_1610;u16 Value_Caption_1610;U16 Draw_Wnd_Caption_1620;u16 vol_165;u16 chn_165;u16 chn0_162;u16 chn1_162;u16 chn2_162;u16 chn3_162;u16

32、vol_10_163;u16 vol_20_163;u16 vol_30_163;Wnd Draw_Wnd;PWnd pDraw_Wnd;int warnning4=1,1,1,1;BOOLEAN IsEdit=0;pdc=CreateDC();pDraw_Wnd=&Draw_Wnd;strChar2Unicode(Draw_Wnd_Caption_16, Draw_Wnd_Caption_8);strChar2Unicode(Channel_Caption_16, Channel_Caption_8);strChar2Unicode(Value_Caption_16, Value_C

33、aption_8);strChar2Unicode(chn_16, chn_8);strChar2Unicode(vol_16, vol_8);strChar2Unicode(chn0_16, chn0_8);strChar2Unicode(chn1_16, chn1_8);strChar2Unicode(chn2_16, chn2_8);strChar2Unicode(chn3_16, chn3_8);strChar2Unicode(vol_10_16,vol_10_8);strChar2Unicode(vol_20_16,vol_20_8);strChar2Unicode(vol_30_1

34、6,vol_30_8);SetRect(&ChannelTextCtrl_Rect, 10,50,55,75);SetRect(&ValueTextCtrl_Rect, 10,125,55,150);SetRect(&Draw_Wnd_Rect, 74, 9, 301, 216);pChannelTextCtrl=CreateTextCtrl(ID_ChannelTextCtrl, &ChannelTextCtrl_Rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL,NULL);pValueTextCtrl=CreateT

35、extCtrl(ID_ValueTextCtrl, &ValueTextCtrl_Rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL,NULL);pDraw_Wnd=CreateWindow(Draw_Wnd_ID, &Draw_Wnd_Rect, FONTSIZE_SMALL,WND_STYLE_MODELESS, Draw_Wnd_Caption_16, NULL);ClearScreen();TextOut(pdc, 55, 10, vol_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 290, 21

36、5, chn_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 116, 215, chn0_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 166, 215, chn1_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 216, 215, chn2_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 266, 215, chn3_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 60, (int)(205-1*200/3.3), vol_10_16, T

37、RUE, FONTSIZE_SMALL);TextOut(pdc, 60, (int)(205-2*200/3.3), vol_20_16, TRUE, FONTSIZE_SMALL);TextOut(pdc, 60, (int)(205-3*200/3.3), vol_30_16, TRUE, FONTSIZE_SMALL);DrawTextCtrl(pChannelTextCtrl);DrawTextCtrl(pValueTextCtrl);for(;)TextOut(pdc, 10, 35, Channel_Caption_16, TRUE, FONTSIZE_SMALL);TextOu

38、t(pdc, 10, 110, Value_Caption_16, TRUE, FONTSIZE_SMALL);if(edit0=1)if(IsEdit=1)FillRect(pdc, 10, 35, 60, 45, GRAPH_MODE_NORMAL, COLOR_WHITE);IsEdit=0;elseIsEdit=1;if(edit1=1)if(IsEdit=1)FillRect(pdc,10,110,60,120, GRAPH_MODE_NORMAL, COLOR_WHITE);IsEdit=0;elseIsEdit=1;DrawWindow(pDraw_Wnd);MoveTo(pdc

39、, 75, 15);LineTo(pdc, 80,10);LineTo(pdc, 85, 15);MoveTo(pdc,80 , 10);LineTo(pdc, 80, 210);LineTo(pdc, 300, 210);MoveTo(pdc, 295, 205);LineTo(pdc, 300, 210);LineTo(pdc, 295, 215);MoveTo(pdc, 80, (int)(210-1*200/3.3);LineTo(pdc, 300, (int)(210-1*200/3.3);MoveTo(pdc, 80, (int)(210-2*200/3.3);LineTo(pdc

40、, 300, (int)(210-2*200/3.3);MoveTo(pdc, 80, (int)(210-3*200/3.3);LineTo(pdc, 300, (int)(210-3*200/3.3);if(result_AD0<=WarnningData0)FillRect(pdc,110,(int)(210-result_AD0*20/3.3),130,210,GRAPH_MODE_NORMAL, COLOR_BLACK);elseif(warnning0=1) FillRect(pdc,110,(int)(210-result_AD0*20/3.3),130,210,GRAPH

41、_MODE_NORMAL,COLOR_BLACK);warnning0=0;elsewarnning0=1;FillRect(pdc,110,(int)(210-WarnningData0*20/3.3),130,210, GRAPH_MODE_NORMAL,COLOR_BLACK);if(result_AD1<=WarnningData1)FillRect(pdc,160,(int)(210-result_AD1*20/3.3),180,210, GRAPH_MODE_NORMAL,COLOR_BLACK);elseif(warnning1=1)FillRect(pdc,160,(in

42、t)(210-result_AD1*20/3.3),180,210, GRAPH_MODE_NORMAL,COLOR_BLACK);warnning1=0;elsewarnning1=1;FillRect(pdc,160,(int)(210-WarnningData1*20/3.3),180,210, GRAPH_MODE_NORMAL,COLOR_BLACK);if(result_AD2<=WarnningData2)FillRect(pdc,210,(int)(210-result_AD2*20/3.3),230,210,GRAPH_MODE_NORMAL, COLOR_BLACK)

43、;elseif(warnning2=1)FillRect(pdc,210,(int)(210-result_AD2*20/3.3),230,210, GRAPH_MODE_NORMAL,COLOR_BLACK);warnning2=0;elsewarnning2=1;FillRect(pdc,210,(int)(210-WarnningData2*20/3.3),230,210, GRAPH_MODE_NORMAL,COLOR_BLACK);if(result_AD3<=WarnningData3)FillRect(pdc,260,(int)(210-result_AD3*20/3.3),280,210,GRAPH_MODE_NORMAL, COLOR_BLACK);elseif(warnning3=1)FillRect(pdc,260,(int)(210-result_AD3*20/3.3),280,210, GRAPH_MODE_NORMAL,COLOR_BLACK);warnning3=0;elsewarnning3=1;FillRect(pdc,260,(i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論