基于ARM的多通道儀表數據采集實驗_第1頁
基于ARM的多通道儀表數據采集實驗_第2頁
基于ARM的多通道儀表數據采集實驗_第3頁
基于ARM的多通道儀表數據采集實驗_第4頁
基于ARM的多通道儀表數據采集實驗_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 物理與電子工程學院 嵌入式系統設計性實驗報告題目 基于ARM的多通道儀表數據采集實驗系 別 物理與電子工程學院 年 級 12 專 業 電子信息工程班 級 電信12 學 號 160412107學生姓名 何劍 指導教師 浦 煒 實驗時間 2015年12月10日 目 錄課題要求31.本課題的目的32.運行環境3正文3一課題分析3二系統設計42.1新建工程42.2打開main.c 文件,編輯Main_Task 任務中的代碼42.3編寫OnKey()函數,響應鍵盤消息42.4編寫繪圖顯示任務Display_Task52.5編寫4 路AD 采集任務ADx_Task62.6用ARM SDT 2.5 或AD

2、S1.2 編譯、下載并調試上述程序,檢查運行結果62.7生成發行版本的.bin 文件,通過USB 下載到嵌入式開發平臺中,運行并檢查輸出結6果。6三.技術實現問題63.1數碼管顯示及閃爍顯示的代碼63.2在LCD屏條形圖中超出部分閃爍原理83.3條形圖頂端顯示具體電壓值的代碼如下:93.4實現條形圖閃爍顯示及文本框顯示相應數值93.5按鍵實現單通道圖形顯示103.6雙擊切換電壓值顯示14四. 總結與體會15設計性實驗報告成績: 指導教師簽名:31課題要求1.本課題的目的采用多任務編程方法,每個任務監視一路AD 轉換, 每一路AD 的轉換結果在液晶屏上用一個條形圖的長短來表示,直觀地顯示每路模擬

3、輸入電壓的大小。可以通過文本框給每路AD 設置警戒值,某路輸入超出警戒線之后條形圖中超出的部分會以閃動的方式顯示。在此基礎上,利用實驗箱中的數碼管顯示每一路的電壓采樣值,并能在超出警戒值的情況下閃爍顯示。或在LCD屏上對應條形圖的頂部顯示具體的電壓值。通過對觸摸屏的雙擊切換電壓值的顯示。按鍵03僅顯示對應的通道柱狀圖,其余按鍵全部顯示。 2.運行環境硬件:ARM嵌入式開發平臺、用于ARM7TDMI的JTAG仿真器、PC機Pentium100以上。軟件:PC機操作系統Win98、Win2000或WinXP、ARM SDT2.51或ADS1集成開發環境、仿真器驅動程序、超級終端通訊程序。正文一課題

4、分析數據采集系統置于被監控的設備處,通過傳感器對設備的電壓或者電流信號進行采樣、保持,并送入A/D轉換器變成數字信號,然后將該信號送到FIFO中。當FIFO中存放的數據到了一定數目時,由ARM7從FIFO中讀出,然后通過ARM7的以太網接口送給上位機。多路采集通道經過模擬開關后再進入A/D轉換器。CPLD是整個系統的控制核心,它控制采集通道的切換、A/D轉換器的啟/停、轉換后的數據在FIFO中的存放地址發生器、產生中斷請求以通知ARM7讀取存放在FIFO中的數據等。二系統設計2.1新建工程將“Exp23 多通道儀表數據采集實驗”中的文件加入工程。2.2打開main.c 文件,編輯Main_Ta

5、sk 任務中的代碼用init_ADdevice()函數初始化處理器的AD 轉換硬件,啟動消息循環。2.3編寫OnKey()函數,響應鍵盤消息流程圖如圖5-4 所示。提示: 1) 這里設置了兩個文本框,用來輸入通道編號和該通道的警戒值,在鍵盤消息響應函數里針對兩個文本框分別作出處理,只處理回車鍵和取消鍵,其他鍵由控件本身處理。程序里用變量EditNumber 指示當前要編輯的文本框控件;用變量input 指示該文本框控件是否處于輸入編輯狀態。以此決定回車鍵應該執行的功能。 2)當文本框控件不是編輯狀態時,回車將使其進入編輯狀態,在程序里用SetWndCtrlFocus( )函數將焦點轉移到該控件

6、并用SetTextCtrlEdit() 函數設置為編輯狀態;當文本框正處于編輯狀態時,回車將使其退出編輯狀態,并將要編輯的文本框切換到另一個文本框控件,取消鍵的處理和這種情況類似。 3) 如果當前要編輯的文本框是警戒值輸入框,在編輯狀態中回車確定后,所輸入的通道編號以及警戒值就會保存在數組WarnningData 中,代碼如下: WarnningData Unicode2Int(pChannelTextCtrl->text)=Unicode2Int(pValueTe xtCtrl->text); 圖5-4 流程圖2.4編寫繪圖顯示任務Display_Task繪制文本框和條形圖等,并

7、實現文本框編輯過程中和超過警戒值后的動畫顯示。流程圖如圖5-5 所示。 提示: 1)程序中用TextOut()函數顯示文本框的提示信息,用數組edit 記錄兩個文本框是否處于編輯狀態,用變量IsEdit 指示提示信息是否顯示。實際上,IsEdit這個變量在顯示任務循環一次就改變一次狀態,當IsEdit=1 時將提示信息擦掉,否則保持顯示不變。這就是閃爍顯示的原理,表示AD 轉換結果的條形圖超出警戒值的部分的閃爍也是這樣實現的,隨著任務的循環隔次的改變狀態。 2)和變量IsEdit 的作用類似,warnningx是條形圖閃爍的指示變量。當某路AD 轉換的結果result_ADx 大于對應通道的警

8、戒值Warnni ngDatax時,根據warnningx 的值決定條形圖的長度是和result_ADx 對應還是和W arnningDatax對應,這樣看起來條形圖的長度是變化的,效果就是超過警戒線的那部分在閃爍。 3)這里條形圖實際上是一個實心矩形,用FillRect()函數填充。 圖5-5 Display_Task 流程圖2.5編寫4 路AD 采集任務ADx_Task提示:1)使用GetADresult()函數即可得到某路AD 輸出的二進制代碼。由于處理器的8路10 位AD 轉換單元的最大輸入電壓是2.50V,所以實際電壓值就是result_ADx=GetADresult(x)*2.50

9、/1024;2.6用ARM SDT 2.5 或ADS1.2 編譯、下載并調試上述程序,檢查運行結果。2.7生成發行版本的.bin 文件,通過USB 下載到嵌入式開發平臺中,運行并檢查輸出結果。三.技術實現問題3.1數碼管顯示及閃爍顯示的代碼/ 0通道顯示ZLG7289_ENABLE();/使zlg7289占有同步串口Delay(5);/延時WriteSDIO(ZLG7289_CMD_DATA1|6);/數碼管以方式1譯碼,第一個數碼管亮WriteSDIO(int)(result_AD0)%10);/顯示個位Delay(1);/延時if(int)(result_AD0)>9)/鍵值大于9顯

10、示十位WriteSDIO(ZLG7289_CMD_DATA1|7);/發送十位數據WriteSDIO(int)(result_AD0)/10);Delay(1);WriteSDIO(ZLG7289_CMD_HIDE);/使一、二、三這三位數碼管顯示WriteSDIO( 0xff);else/鍵值小于10不顯示十位WriteSDIO(ZLG7289_CMD_HIDE);/使個位數碼管顯示WriteSDIO(0x7f); a=0xff;if(result_AD0>WarnningData0)a=0x3f;Delay(1);WriteSDIO(ZLG7289_CMD_FLASH);/閃爍Wri

11、teSDIO(a);通道1、2、3和通道0一樣只需將通道0中的輸入值和警戒值改成對應通道的值就可以實現,當然要選擇不同數碼管來顯示,具體哪個數碼管可由自己選擇。3.2在LCD屏條形圖中超出部分閃爍原理利用FillRect()函數畫出條形圖,如果采樣值小于警戒值則正常畫圖,如果超過警戒值,則先畫采樣值所對應的條形圖,后畫出警戒值所對應的條形圖,兩者無限循環這樣現實的現象就是超出部分閃爍。閃爍顯示的代碼如下:if(result_AD0<=WarnningData0)FillRect(pdc, 110, (int)(210-result_AD0*20/3.3), 130, 210,GRAPH_

12、MODE_NORMAL, COLOR_BLACK);elseif(warnning0=1)FillRect(pdc, 110, (int)(210-result_AD0*20/3.3), 130, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);warnning0=0;elsewarnning0=1;FillRect(pdc, 110, (int)(210-WarnningData0*20/3.3), 130,210, GRAPH_MODE_NORMAL,COLOR_BLACK);這是通道0的代碼,通道1、2、3的代碼同上,只要改變相應的輸入值和警戒值即可。3.3條形圖

13、頂端顯示具體電壓值的代碼如下:Int2Unicode(int)(result_AD0),result_AD0_16);TextOut(pdc,114,(int)(198-result_AD0*20/3.3),result_AD0_16,TRUE, FONTSIZE_SMALL);相應的也只需改變對應通道的輸入值和警戒值即可實現其他通道電壓值顯示。3.4實現條形圖閃爍顯示及文本框顯示相應數值完整代碼如下:/0通道if(result_AD0<=WarnningData0)FillRect(pdc, 110, (int)(210-result_AD0*20/3.3), 130, 210,GRA

14、PH_MODE_NORMAL, COLOR_BLACK);elseif(warnning0=1)FillRect(pdc, 110, (int)(210-result_AD0*20/3.3), 130, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);warnning0=0;elsewarnning0=1;FillRect(pdc, 110, (int)(210-WarnningData0*20/3.3), 130, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);Int2Unicode(int)(result_AD0),result_AD0_1

15、6);TextOut(pdc, 114, (int)(198-result_AD0*20/3.3), result_AD0_16, TRUE, FONTSIZE_SMALL);其他通道的顯示和0通道類似,只需修改相應坐標及相應數值即可。3.5按鍵實現單通道圖形顯示添加全局變量static int Key_val;switch(nkey) case 15:Key_val=0;break; case 11:Key_val=1;break; case 12:Key_val=2;break; case 13:Key_val=3;break; case 8:Key_val=4;break; 在void

16、Display_Task(void * Id) 中添加相應功能,代碼如下:if(Key_val=0)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_MODE_NORMAL,COLOR_BLACK);warnning0=0;elsewar

17、nning0=1;FillRect(pdc, 110, (int)(210-WarnningData0*20/3.3), 130, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);else if(Key_val=1)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, (int)(210-result_AD1

18、*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);else if(Key_val=2)if(result_AD2<=WarnningData2)FillRect(pdc, 210, (int)(210-result_AD2*20/3.3), 230, 210,GRAPH_MODE_NORMAL, C

19、OLOR_BLACK);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);else if(Key_val=3)if(result_AD3<=WarnningData3)FillRect

20、(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, (int)(210-WarnningData3*20/3.3), 280, 210, GRAPH_MODE_NORMAL,C

21、OLOR_BLACK);else if(Key_val=4)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_MODE_NORMAL,COLOR_BLACK);warnning0=0;elsewarnning0=1;FillRect(pd

22、c, 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, (int)(210-result_AD1*20/3.3), 180, 210, GRAPH_MODE_NORMAL,

23、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);elseif(warnning2=1)FillRect(pdc, 210, (int)(

24、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

25、_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, (int)(210-WarnningData3*20/3.3), 280, 210, GRAPH_MODE_NORMAL,COLOR_BLACK);3.6雙擊切換電壓值顯示在void Main_Task(void *Id)中添加代碼case OSM_TOUCH_SCREE

26、N: switch(pMsg->LParam) case TCHSCR_ACTION_CLICK: X=pMsg->WParam&0xFFFF; Y=pMsg->WParam>>16; break; case TCHSCR_ACTION_DBCLICK: flag=!flag; break; 在void Display_Task(void * Id) 中添加代碼if(flag)Int2Unicode(int)(result_AD0),result_AD0_16);TextOut(pdc, 114, (int)(198-result_AD0*20/3.3),

27、 result_AD0_16, TRUE, FONTSIZE_SMALL);Int2Unicode(int)(result_AD1),result_AD1_16);TextOut(pdc, 164, (int)(198-result_AD1*20/3.3), result_AD1_16, TRUE, FONTSIZE_SMALL);Int2Unicode(int)(result_AD2),result_AD2_16);TextOut(pdc, 214, (int)(198-result_AD2*20/3.3), result_AD2_16, TRUE, FONTSIZE_SMALL);Int2

28、Unicode(int)(result_AD3),result_AD3_16);TextOut(pdc, 264, (int)(198-result_AD3*20/3.3), result_AD3_16, TRUE, FONTSIZE_SMALL);4. 總結與體會雖然有做了幾個ARM實驗的基礎,不過我在做這個課題的時候依然遇到了不少問題。要想完成這個設計,我們必須要將前面所掌握的知識融會貫通,并靈活運用,這樣才能得到我盟需要的結果。首先按照的實驗要求,將以前的實驗拿出來鞏固,將有關函數的用法弄清楚,不懂的請教他人,和同學討論,最終有了一個比較的明確的方向,可是真正做的時候并不是那么簡單的,總

29、是遇到這樣或那樣的問題,在同學的幫助下,終于把程序中的錯誤都改正過來了。這次實驗驗收的時候也出現了一些問題,在老師的指導下也改正了這些錯誤。這次實驗使我學到了很多,只有把理論知識和實踐結合起來,才能夠真正理解。這樣才能發揮理論知識的用途。做實驗的時候不能太急躁,要慢慢來,凡事都不能一氣呵成的,只有靜下心來,認真思考,找出問題所在,勇敢面對,努力解決,這樣我們才能從中有所收獲。附錄#include".ucos-iiincludes.h" /* uC/OS interface */#include ".ucos-iiaddosaddition.h"#incl

30、ude ".incdrv.h"#include <string.h>#include".incdrvad.h"#include"uhal.h"#include"tchScr.h"#include"zlg7289.h"#include"44b.h"#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting #define ID_ChannelTextCtrl 1

31、01#define ID_ValueTextCtrl 102#define Draw_Wnd_ID 104PTextCtrl pChannelTextCtrl,pValueTextCtrl;float result_AD0,result_AD1,result_AD2,result_AD3;int WarnningData4=26,26,26,26;int edit2=0,0;BOOLEAN flag=FALSE;extern int Zlg7289SIOBand;extern int Zlg7289SIOCtrl;static int Key_val;/*?*/OS_STK Main_Stac

32、kSTACKSIZE*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 Display_Task_Prio 20OS_STK AD0_Task_StackSTACKSIZE*8=0, ; /Main_Test_Task?void AD0_Task(vo

33、id *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_Task?void AD2_Task(void *Id); /Main_Test_Task#define AD2_Task_Prio 23OS_STK AD3_Task_

34、StackSTACKSIZE*8=0, ; /Main_Test_Task?void AD3_Task(void *Id); /Main_Test_Task#define AD3_Task_Prio 24/*?OS?*tcp?11?8?9?10lcd?59?1*/*?*/OS_EVENT *Nand_Rw_Sem; /Nand_Flash?/and you can use it as folloeing:/ Nand_Rw_Sem=OSSemCreate(1); /?Nand-Flash?,?1?/ OSSemPend(Nand_Rw_Sem,0,&err);/ OSSemPost(N

35、and_Rw_Sem);OS_EVENT *Uart_Rw_Sem; /Uart?/and you can use it as folloeing:/ Uart_Rw_Sem=OSSemCreate(1); /?Uart?,?1?/ OSSemPend(Uart_Rw_Sem,0,&err);/ OSSemPost(Uart_Rw_Sem);/void initOSGUI()/?initOSMessage();initOSList();initOSDC();initOSCtrl();initOSFile();/ Main function. /int main(void)Uart_Pr

36、intf("nArm Target Init OK."); Zlg7289_Reset();/zlg7289?ARMTargetInit(); /?OSInit(); /? uHALr_ResetMMU();/?MMULCD_Init(); /?LCD?LCD_printf("LCD initialization is OKn");/?LCD_printf("320 x 240 Text Moden");initOSGUI();/?LoadFont();/?Unicode?LoadConfigSys();/?config.sys?LC

37、D_printf("Create task on uCOS-II.n");OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ ?OSTaskCreate(Display_Task,(void *)0, (OS_STK *)&Display_Task_StackSTACKSIZE-1, Display_Task_Prio);/ 20OSTaskCreate(AD0_Task,(void *)0, (OS_STK *)&AD0_T

38、ask_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 *)&AD2_Task_StackSTACKSIZE-1, AD2_Task_Prio);OSTaskCreate(AD3_Task,(void *)0, (OS_STK *)&AD3_Task_StackSTACKSIZE-1, AD3_Task

39、_Prio);OSAddTask_Init();/?LCD_printf("Starting uCOS-II.n");LCD_printf("Entering graph mode.n");LCD_ChangeMode(DspGraMode);/?LCD?InitRtc();/?Nand_Rw_Sem=OSSemCreate(1); /?Nand-Flash?,?1?/OSStart();/?/?return 0;/void init_ADdevice()/rADCPSR=20;/rADCCON=ADCCON_SLEEP;/U8 onKey(int nk

40、ey, int fnkey)static BOOLEAN input=FALSE;static int EditNumber=1; switch(nkey) case 15:Key_val=0;break; case 11:Key_val=1;break; case 12:Key_val=2;break; case 13:Key_val=3;break; case 8:Key_val=4;break; if(EditNumber=1)switch(nkey)case 14:/OKif(!input)SetWndCtrlFocus(NULL, ID_ChannelTextCtrl);pChann

41、elTextCtrl->text0=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=F

42、ALSE;edit0=0;EditNumber=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);DrawTextC

43、trl(pValueTextCtrl);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

44、Main_Task(void *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, GetWndCtrlFo

45、cus(NULL);if(pCtrl->CtrlType=CTRLTYPE_WINDOW)if(PWnd)pCtrl)->style&WND_STYLE_MODE)=WND_STYLE_MODE)OSOnSysMessage(pMsg);break;if(onKey(pMsg->WParam,pMsg->LParam) )break;default:OSOnSysMessage(pMsg);break; case OSM_TOUCH_SCREEN: switch(pMsg->LParam) case TCHSCR_ACTION_CLICK: X=pMsg-

46、>WParam&0xFFFF; Y=pMsg->WParam>>16; break; case TCHSCR_ACTION_DBCLICK: flag=!flag; break; DeleteMessage(pMsg);OSTimeDly(200);void Display_Task(void * Id) /Main_Test_TaskPDC pdc;structRECT ChannelTextCtrl_Rect,ValueTextCtrl_Rect,Draw_Wnd_Rect;char Channel_Caption_810="Channel:&qu

47、ot;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="1"char chn2_8="2"char chn3_8="3"char vol_10_8="10"char vol_20_8="20"c

48、har 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 result_AD0_165;u16 result_AD1_165;u16 result_AD2_165;u16 result_AD3_165;u16 vol_10_163;u16 vol_20_163;u16 vol_30_163;Wnd Draw_Wnd;PWnd pDraw_Wnd;int warnning4=1,1,1,1

溫馨提示

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

評論

0/150

提交評論