freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于網(wǎng)絡(luò)的虛擬儀器測試系統(tǒng)資料-資料下載頁

2025-03-25 12:46本頁面
  

【正文】 ],amp。preamble[2],amp。preamble[3],amp。preamble[4],amp。preamble[5],amp。preamble[6],amp。preamble[7],amp。preamble[8],amp。preamble[9])。 if(error!=VI_SUCCESS) {error_handler(/*oscillograph*/m_Session,error)。return。}//************************************數(shù)據(jù)點(diǎn)的采集部分**************************************//利用字符轉(zhuǎn)換符和viScanf函數(shù)來進(jìn)行讀取數(shù)據(jù)并定義一個無符號的字符數(shù)組來對讀//取的數(shù)據(jù)進(jìn)行存儲--隨后進(jìn)行數(shù)據(jù)//**************************************的轉(zhuǎn)換和數(shù)據(jù)的處理2005/5/17 viPrintf(/*oscillograph*/m_Session,:waveform:data?\n)。 unsigned char temp[2000]。 for(int i=0。i2000。i++) { error=viScanf(/*oscillograph*/m_Session,%c,amp。temp[i])。 if(error!=VI_SUCCESS) {error_handler(/*oscillograph*/m_Session,error)。 return。} }//*****************************************數(shù)據(jù)的轉(zhuǎn)換***************************************** int j=0。 for(i=18。i2000。i+=20,j++) { temp[j]=(int)temp[i]。 n++。//數(shù)據(jù)的個數(shù) }數(shù)據(jù)采集這一塊我花了不少的時間,不斷的對指令進(jìn)行測試,但是以為只要通過:waveform:data?指令然后進(jìn)行讀取就OK了!!然而,查看資料才曉得示波器采集回來的數(shù)據(jù)是想前面所示的那樣,有頭部數(shù)據(jù)以及二進(jìn)制數(shù)據(jù)塊,這就把我給難住了!二進(jìn)制數(shù)據(jù)該怎么讀呢??從安捷倫網(wǎng)站上下載下來的資料中雖然提供了怎樣進(jìn)行波形數(shù)據(jù)的讀取的方法,但它并沒有給出在VISA情況下的數(shù)據(jù)的讀取的方法。但是它也給了我一定的提示:頭部給出了數(shù)據(jù)塊的字節(jié)的個數(shù),既然是字節(jié),也就是一個字符。那么這樣的話就可以讀取數(shù)據(jù)了。然后經(jīng)過我的測試,一切OK!我好高興~~~~~讀回數(shù)據(jù)之后,就是數(shù)據(jù)的顯示問題。至于這個我采用了別人給我的一個類,通過該類我可以比較輕松的進(jìn)行數(shù)據(jù)的顯示工作。我只要將讀回的波形數(shù)據(jù)進(jìn)行處理,并將數(shù)據(jù)傳遞給給類的一個數(shù)組就可以了?。?/*****************************************數(shù)據(jù)的轉(zhuǎn)換***************************************** int j=0。 for(i=18。i2000。i+=20,j++) { temp[j]=(int)temp[i]。 n++。//數(shù)據(jù)的個數(shù) }//*****************************************數(shù)據(jù)存儲******************************************* for(int k=0。kn。k++) { [k]=(((float)temp[k]preamble[9])*preamble[7]+preamble[8])*m_Y。//這里使用Y } Invalidate()。//這個用于屏幕畫面的刷新兩大問題的解決,示波器也就基本上可以告一個段落了??!其他的功能的實現(xiàn)相對來說要容易的些!下面是示波器顯示窗口部分初始化代碼://*******下面是另外一種方法更方便控制示波器的顯示的尺度,也就是在對話框模板上//添加一個靜態(tài)控件,并調(diào)節(jié)它的尺度到你需要的范圍,并最好是更改一下它的ID,然//后通過下列語句來進(jìn)行創(chuàng)建顯示 CRect m_nRect。 CStatic* pStatic=(CStatic*)GetDlgItem(IDC_STATIC_SHOW)。 pStaticGetClientRect(amp。m_nRect)。 (IDC_STATIC_SHOW,this)。 =m_nRect。 =+20。 =+15。 =。 =。在基本的問題解決之后,希望對于顯示在示波器上的波形具有縮放功能,使自己的示波器更完美。于是就添加了兩個Slider控件來控制波形的拉伸,起初的設(shè)計就是刷新窗口的問題:因為通過滑塊來改變XY的值,但需要它能及時的在窗口上得到響應(yīng),這個問題使我有點(diǎn)頭痛。起初的設(shè)計比較的粗糙,通過鼠標(biāo)的點(diǎn)擊消息來進(jìn)行對整個窗口的刷新。不過,這樣的設(shè)計實在是太難看了,后來,通過上網(wǎng)咨詢,論壇的朋友建議我使用線程函數(shù)進(jìn)行對特定的窗口進(jìn)行刷新。于是,我開始接觸線程,并去了解線程,并通過書本上的例子的練習(xí),加深了解以及和同學(xué)進(jìn)行探討,終于將問題得以解決。具體代碼見附錄,下面是線程函數(shù)的代碼:static CEvent g_End。//事件對象的建立struct data //需要傳遞的數(shù)據(jù){ CRect rect。 COSCILLOGRAPH* dlg。 CStatic* m_pCS。}m_Data。//***************************關(guān)鍵的線程函數(shù)UINT ThreadProc(LPVOID param){ if(::WaitForSingleObject(g_End,0)==WAIT_OBJECT_0)//該語句用來判斷是否掛起或結(jié)束線程 { data* p=(data*)param。//這里是針對指定控件如靜態(tài)控件的刷新,相對對話框的刷新,這種刷新不會出現(xiàn)閃屏問題pm_pCSInvalidateRect(prect,TRUE)。 ()。 return 0。 } return 0。}5 萬用表模塊 Agilent E1412A 安捷倫的E1412A 6位半高精度萬用表是一個規(guī)格為C,具有一個槽,基于消息基的VXI模塊,它與E1312A模塊只是規(guī)格上的不同。它具有更多的功能和更高的執(zhí)行效率,而在價格上卻與5位半的萬用表相當(dāng)。該萬用表提供了廣泛的測量功能包括電壓、幅值、電阻、和頻率的高級測量以及對測試TTL輸出和直流電壓比測量。標(biāo)準(zhǔn)的測量包括ac/dc電壓、ac/dc電流、2-4線電阻和頻率與周期的測量。測量直流電壓時,該萬用表可以提供每秒65次范圍變化和每秒30次函數(shù)變化。 Agilent E1412A 通過閱讀Agilent E1412A的用戶使用手冊,了解到Agilent E1412A能進(jìn)行高精度的測量。然而,為了到達(dá)最好的測量效果,必須做一些準(zhǔn)備工作來消除一些潛在的測量誤差。在使用手冊中給出了一些常見的錯誤,并提供了一些解決的辦法。譬如在DC電壓測量過程中,就會遇上如下的一些常見的錯誤:熱電動勢、阻抗錯誤、電流泄漏錯誤、不合格電源的噪聲、共模以及磁環(huán)路和地環(huán)路引起的噪聲等等,都提供了一些解決的思路。而在進(jìn)行測量之前也需要對萬用表進(jìn)行適當(dāng)?shù)呐渲?比如說AC信號的過慮(設(shè)置三種不同的AC過濾器,可以提高低頻測量的精度或是在進(jìn)行AC電壓以及電流測量時提高讀取速率。又如DC輸入阻抗(在正常的情況下,所有的DC電壓范圍的輸入阻抗是10兆歐姆來最小化噪聲。你可以為100mVdc, 1Vdc and 10Vdc 范圍的直流電壓設(shè)置輸入阻抗高于10G歐姆以利于減少測量負(fù)載的錯誤。)還有許多配置,用戶手冊中都給出了說明。最簡單的測量是通過使用MEASURE命令來進(jìn)行的,該命令用來配置函數(shù),啟動測量和置數(shù)據(jù)于緩沖區(qū)以便計算機(jī)利用IO命令的讀取。一條MEASURE命令將會啟動多個測量(如果觸發(fā)數(shù)或采樣數(shù)大于1);如果讀回數(shù)據(jù)的速度不夠快以至于模塊的輸出緩沖區(qū)滿時,測量將會停止直至有空間來存儲數(shù)據(jù)時才重新啟動測量。譬如:*RST //復(fù)位萬用表MEAS:VOLT:DC?//配置dc電壓測量,并從萬用表返回數(shù)據(jù)ENTER statement//將數(shù)據(jù)傳送給計算機(jī) 而指令read?也是可以用來啟動測量的,在使用read?指令之前,需要使用所需的測量函數(shù)對萬用表進(jìn)行配置。該命令啟動測量并將數(shù)據(jù)直接放入輸出緩沖區(qū),接著由用戶提供IO函數(shù)來取回數(shù)據(jù)并發(fā)送給計算機(jī)。一條read?指令可以啟動多個測量(如果觸發(fā)數(shù)或采樣數(shù)大于1時);如果讀回數(shù)據(jù)的速度不夠快以至于模塊的輸出緩沖區(qū)滿時,測量將會停止直至有空間來存儲數(shù)據(jù)時才重新啟動測量。read?指令被分解為兩個命令:init和fetc?.指令init置萬用表于等待觸發(fā)狀態(tài),外部觸發(fā)發(fā)生來啟動測量,測量值被存儲于萬用表內(nèi)部存儲器中。而指令fetc?將萬用表的內(nèi)存中的數(shù)據(jù)輸出到輸出緩沖區(qū)中并由計算機(jī)取回數(shù)據(jù)。注意:在使用init和fetc?命令時應(yīng)當(dāng)小心,萬用表的內(nèi)部存儲器的容量只有有512個字節(jié),超過該范圍的最先的數(shù)據(jù)將會被丟棄。每個測量以LF(換行符)結(jié)束。HPIB End or Indentify信號將會在最后一個字節(jié)被發(fā)送。如果多個測量被返回,測量值會以逗號分隔,EOI也會在最后一個字節(jié)被發(fā)送。例如:++LF,++12LF,++12LFEOI。 做外部觸發(fā)測量時,必須提供TTL外部觸發(fā)信號到BNC(同軸電纜插接件);測量將會被這個信號低脈沖觸發(fā)。注意:Configure命令用于指定函數(shù)配置萬用表,該命令并不啟動測量。對萬用表的測量過程有了一定的了解之后,心中也有了一定的思路,如下圖:萬用表的初始化測量配置啟動測量結(jié)果顯示觸發(fā)器、輸入輸出配置配置測量函數(shù)和參數(shù)以及參數(shù)的附加參數(shù)對于萬用表的初始化,我將其設(shè)置為多選按鈕來進(jìn)行配置,設(shè)計的思想是這樣的:采用多選按鈕,也就意味著可以不選,采用默認(rèn)的參數(shù)值;而用戶如果需要設(shè)置的話,則單擊選中按鈕,會彈出一個對話框提供用戶選擇如下所示:圖5-1上面就是我的萬用表的基本的框圖了。而測量結(jié)果的顯示部分則是通過彈出式信息框的形式來對測量結(jié)果進(jìn)行顯示。這里給出了程序的部分代碼如下://這里對萬用表的輸入輸出以及采樣進(jìn)行設(shè)置,而這些參數(shù)的值是通過用戶界面中的//控件進(jìn)行傳遞的viPrintf(/*multimeter*/,SAMPLE:COUNT%s\n,m_nStr_Sample)。viPrintf(/*multimeter*/,INPUT:IMPEDANCE:AUTO %s\n,m_nStr_Input)。viPrintf(/*multimeter*/,OUTPUT:%s\n,m_nStr_Output)。//觸發(fā)器設(shè)置按鈕的點(diǎn)擊-這里是一個大的循環(huán),對用戶是否對觸發(fā)器進(jìn)行了設(shè)置操作//通過變量m_btrigger進(jìn)行判斷 if(m_btrigger==1) {viPrintf(/*multimeter*/,TRIG:SOURCE %s\n,)。viPrintf(/*multimeter*/,TRIG:COUNT %s\n,)。 viPrintf(/*multimeter*/,TRIG:DELAY %s\n,)。//這里要對延時做處理判斷//*******************參數(shù)是否已經(jīng)被選擇的判斷2005/5/22********************* int m_nID。 m_nID=GetCheckedRadioButton(IDC_RADIO_VOLTAGE,IDC_RADIO_PERIOD)。 if(m_nID==0) { MessageBox(請先選擇測量參數(shù)!,提示信息,MB_OK)。 return。} switch(m_nID)//通過這個switch語句對用戶選擇的測量參數(shù)的判斷 {case IDC_RADIO_VOLTAGE://電壓測量 viPrintf(/*multimeter*/,CONF:VOLT:%s %s,%s\n,)。 if(DC==) {viPrintf(/*multimeter*/,VOLT:DC:%s\n,)。 viPrintf(/*multimeter*/,VOLT:DC:%s\n,)。} break。 ………………//通過如下的SCPI命令啟動測量 viPrintf(/*multimeter*/,INIT。FETC?\n)。//通過函數(shù)viScanf()來讀取讀取數(shù)據(jù),并通過一個彈出式信息框?qū)y量結(jié)果進(jìn)行顯示 char buff[100]。 viScanf(/*multimeter*/,%s,buff)。 CString temp。 (Result is %s,buff)。 MessageBox(temp,測量結(jié)果顯示,MB_OK)。在萬用表的設(shè)計和編程過程中,由于有了函數(shù)信號發(fā)生器以及示波器的經(jīng)驗,所以工作進(jìn)度就相對來的快一些,關(guān)鍵的的問題還在于程序的調(diào)試上。6 測試系統(tǒng)的測試舉例 利用函數(shù)信號發(fā)生器調(diào)頻波和調(diào)制波的實現(xiàn)首先,運(yùn)行主程序如下:通過單擊此按鈕來搜索儀器資源 如左圖所示,通過單擊查找資源按鈕來搜索儀器 并通過一個列表控件將有效的資源列于表中,通 過雙擊列表框中的資源地址來激活建立會話按鈕 從而允許用戶建立會話(會話建立成功與否會提 示用戶相關(guān)的信息)。在三個模塊的按鈕的處理函 數(shù)中,對地址進(jìn)行有效的判斷,從而無需用戶來
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1