www.interface.co.jp TUT-0022 Ver 1.0
Ver 1.0 2000 11 MicrosoftWindowsWindows NTMSVisual C++Excel Microsoft Corporation,, (,), Web( )
...1...1...1 1....2 1.1. D/A...2 1.2...3 1.3....3 2. DA...4 2.1...4 2.2...5 2.3 DLL...6 3. Visual C++ DA...7 3.1....8 3.2. DLL...9 3.3. DA...9 4....10 4.1.... 11 Step1.... 11 Step2. DLL...13 Step3....17 Step....21 4.2....31 4.3....32 4.4....33 4.5....34 4.6....35 4.7....37 Step1....37 Step....37 Step...39 5. DLL...43 5.1. FbiDa.DLL...43 DaOpen...43 DaClose...43 DaGetDeviceInfo...43 DaSetBoardConfig...44 DaGetBoardConfig...44 DaSetSamplingConfig...45 DaGetSamplingConfig...45 DaSetMode...45 DaGetMode...46 DaSetSamplingData...46 DaClearSamplingData...47 DaStartSampling...47 DaStartFileSampling...48 DaSyncSampling...48 DaStopSampling...49 DaGetStatus...49 DaOutputDA...50 DaInputDI...50 DaOutputDO...50 DaAdjustVR...51 CallBackProc...51 5.2. FbiDaDC.DLL...52 DaDataConv...52 DaWriteFile...53 fnconv...53...54 5.3. Visual C++...55 DASMPLREQ...55 DASMPLCHREQ...56 DABOARDSPEC...57
DAMODEREQ PCI-3305PCI-3310PCI-3336PCI-3340...58 DAMODECHREQ PCI-3305PCI-3310PCI-3336PCI-3340...59 5.4. Visual C++...60...64...65
[s/ch] PCI-3305 138,000 12bit 2 0.2 PCI-3337 169,800 16bit 4 5 PCI-3335 189,800 16bit 4 5 PCI-3329 59,000 12bit 8 I/O 10 PCI-3338 82,000 12bit 8 I/O 10 PCI-3336 119,800 16bit 4 I/O 5 PCI-3310 139,800 16bit 4 I/O 5 PCI-3325 128,000 / 12bit 4 I/O 10() 50() PCI-3340 17,9800 16bit 8 I/O 5 PCI-3342A 3,9800 12bit 4 I/O 10 PCI-3343A 3,9800 12bit 4 I/O 10 PCI-3521 73,000 12bit 4 I/O 10 PCI-3522A 49,800 12bit 4 I/O 10 PCI-3523A 49,800 12bit 4 I/O 10 PCI-3341A PCI-3345A PCI-3346A 8CH12 DA 10s DA PCI-3347 4CH12 DA 10s DA 16CH12 DA 10s DA 4CH16 DA 10s DA Web site http:www.interface.co.jp
DA Visual C++ Visual C++ http:www.interface.co.jp FAQ BPC-0810 PCI-3305 PCI-3310 PCI-3325 PCI-3329 PCI-3335 PCI-3336 PCI-3337 PCI-3338 PCI-3340 PCI-3342A PCI-3343A PCI-3521 PCI-3522A PCI-3523A Windows Me/98/95Visual C++Ver. 5.0 Ver. 6.0 Windows 2000/NT 1
1. analog 1 2 1 2 1-1 1:53 1:531:53.11:53.1241:53.1245.. 1.1. D/A D/A Digital to Analog Converter DA D/A CD D/A 2
1.2. DA DA V 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 1-2 1.3. unipolarbipolar 5V 0V +5V 0V -2.5V +2.5V [V] 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 ユニポーラ [V] 2.5 2 1.5 1 0.5 0-0.5-1 -1.5-2 バイポーラ 0-2.5 1-3 3
DA 2. DA Windows Me/98/95 DA Windows 2000/ NT 2.1 RSW1 LED1 CN1 RSW1 PCI 2-1 PCI DA 1 0F ID PCI PCI AC PCI AC Windows Me/98/95 2-2 4
DA 2.2 CD CD-ROM CD GPC3300 Win95 OK GPC-3300 DISK OKOK CP GPC3300 Win95 2-3 PCI-3310 ここにボードが 追 加 されます 2-3 5
DA 2.3 DLL CD CD-ROM CD GPC3300 JPN SETUP SETUP.EXE 2-4 Readme README.HTM Interface GPC-3300 6
Visual C++ DA 3. Visual C++ DA Visual C++DA DLL Windows I/O DA DLL DLL Visual C++ アプリケーション ダイナミックリンクライブラリ FBIDA.DLL ( ) Win32 API 仮 想 デバイスドライバ (CP33xx.VxD) 出 力 DAボード 3-1 7
Visual C++ DA 3.1. DA PCI-3310. PCI-3310 PCR-E36LMDA PCR-E36FS PCR-E36FS VOUT1 VOUT2 VOUT3 VOUT4 NC NC NC NC NC NC EXCLK OUT 2 NC EXINT IN NC NC RESET IN NC -15V 1 1 19 2 20 3 21 4 22 5 23 6 24 7 25 8 26 9 27 10 28 11 29 12 30 13 31 14 32 15 33 16 34 17 35 18 36 NC VCOM1 VCOM2 VCOM3 VCOM4 NC NC NC NC NC NC IN1 IN2 OUT1 OUT2 DCOM ACOM +5V 1 +15V 1 PCS-E36LK 3-2 NC 2 3-1 VOUT1 1 CH1 VOUT2 2 CH2 VOUT3 3 CH3 VOUT4 4 CH4 VCOM1 19 CH1 VCOM2 20 CH2 VCOM3 21 CH3 VCOM4 22 CH4 1TYP 5mA 450pF 0V 0V 8
Visual C++ DA 3.2. DLL Visual C++ DLL DA FBIDA.DLLDLL Dynamic Link Library 1 Visual C++ DLL FBIDA.LIBFBIDADC.LIB DLL 3.3. DA DA () 1 ボード 初 期 化 プログラム 起 動 2 データ 作 成 出 力 するデータ ( 波 形 データ)の 作 成 3 出 力 処 理 データの 出 力 4 終 了 処 理 プログラム 終 了 3-3 Visual C++ DA DA DA DA 9
(DA) 4. DA DA PCI-3310 1 36 TRM-800036 36 CAB-83xx CAB-84xx 波 形 データ 端 子 台 DAボード オシロスコープ 4-1 PCI-3310 DA 1VOUT1 PCI-3310TRM-8000 20 COM 0 1 10
4.1. DA PCI-3310 1 05V 100 Hz V 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 Step1. 4-2 1. Visual C++ MFC AppWizardexeDaOutput OK MFC AppWizard (exe) 図 4-3 11
2. SDI/MDI SDI SDI 4-4 3. 2 5 6. OK OK 図 4-5 12
Step2. DLL DLL FBIDA.LIBFBIDADC.LIB DLL Dynamic Link Library WindowsI/O DA DLL DLL3-1 DLL Visual C++. FBIDA.LIBFBIDADC.LIBFBIDA.HGPCDA.H 図 4-6 13
4-7 Program Files Interface GPC3300 include OK include 図 4-8 14
4-9 Program Files Interface GPC3300 lib OK lib 4-10 15
4-11. FBIDA.LIBFBIDADC.LIB fbida.lib fbidadc.libok 図 4-12 FBIDA.LIB FBIDADC.LIB FBIDA.LIB FBIDADC.LIB FBIDA.H GPCDA.H は Setup でインストールされる lib include Program Files Interface GPC3300 16
Step3. DA DA List 1-1 List 1-1 HANDLE hdevicehandle; hdevicehandle = DaOpen( FBIDA1 ); FBIDA1 4-13 DaOpen HANDLE 17
List 1-2 List 1-2 INT nret; nret = DaClose(hDeviceHandle); DaClose hdevicehandle hdevicehandle DaOpen DaOpen hdevicehandle List 1-2 hdevicehandle DaOpen DaOpen DaClose DaOpen DaClose 4-14 1. ClassWizard 2. DaOutput CDaOutputView ID CDaOutputView WM_CREATE 18
3. 図 4-15 4. WM_DESTROY 5. FileView SourceFile DaOutputView.cpp #include fbida.h #include <math.h>list1-3 6. DaOutputView.h List1-4 7. OnCreate List1-5 8. OnDestroy List1-6 List 1-3 DaOutputView.cpp fbida.h DaOutputView.cpp : CDaOutputView #include "stdafx.h" #include "DaOutput.h" #include "DaOutputDoc.h" #include "DaOutputView.h" #include "fbida.h" #include <math.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = FILE ; #endif 19
List 1-4 CDaOutputView.h DaOutputView.h : CDaOutputView / #include "fbida.h" #if!defined(afx_daview_h 67D77C11_AB22_11D4_845C_00004CBDE0CF INCLUDED_) #define AFX_DAVIEW_H 67D77C11_AB22_11D4_845C_00004CBDE0CF INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif _MSC_VER >= 1000 class CDaOutputView : public CView { protected: CDaOutputView(); DECLARE_DYNCREATE(CDAView) public: CDaOutputDoc* GetDocument(); HANDLE hdevicehandle; WORD gwsmpldata[256]; DASMPLREQ gconfig; public: List 1-5 CDaOutputView OnCreate int CDaOutputView::OnCreate(LPCREATESTRUCT lpcreatestruct) { INT nret; if (CView::OnCreate(lpCreateStruct) == -1) return -1; hdevicehandle = DaOpen("FBIDA1"); if(hdevicehandle == INVALID_HANDLE_VALUE){ AfxMessageBox(""); return 0; nret = DaGetSamplingConfig(hDeviceHandle,&gConfig); if(nret!= DA_ERROR_SUCCESS){ DaClose(hDeviceHandle); AfxMessageBox(""); return 0; return 0; 20
List 1-6 CDaOutputView OnDestory void CDaOutputView::OnDestroy() { INT nret; CView::OnDestroy(); if(hdevicehandle!= INVALID_HANDLE_VALUE){ nret = DaClose(hDeviceHandle); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); List 1-5 DaGetSamplingConfig Step. 1. ResourceView Menu IDR_MAINFRAME 2. 図 4-16 3. ID ID_OUTSIN 図 4-17 21
ID_OUTSIN 図 4-18 4. Class Wizard 5. DaOutput CDaOutputView ID ID_OUTSIN COMMAND 6. 関 数 の 追 加 をクリックします 4-19 7. OnOutsin OK 22
8. ID ID_DASTART 9. Class Wizard 10. DaOutput CDaOutputView ID ID_DASTART COMMAND 11. OnDastart OK 12. ID ID_DASTOP 13. Class Wizard 14. DaOutput CDaOutputView ID ID_DASTOP COMMAND 15. OnDastop OK 16. FileView SourceFile OnOutsin OnDastart OnDastop List 1-7 CDaOutputView OnOutsin void CDaOutputView::OnOutSin() { INT ncount; WORD wmax; WORD wmin; WORD wmid; 8 wmax = 0xff; 23
wmin = 0; 12 wmax = 0xfff; wmin = 0; 16 wmax = 0xffff; wmin = 0; wmid= (wmax + wmin) / 2; for(ncount = 0;nCount < 200;nCount++){ gwsmpldata[ncount] = (WORD)(wMid * sin(ncount * 2 * 3.14159265 / 200) + wmid); List 1-8 CDaOutputView OnDastart void CDaOutputView::OnDastart() { INT nret; nret = DaSetBoardConfig(hDeviceHandle,200,NULL,NULL,0); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; gconfig.ulsmplrepeat = 0; gconfig.fsmplfreq = 20000; gconfig.smplchreq[0].ulchno = 1; gconfig.smplchreq[0].ulrange = DA_0_5V; 20kHz 0V5V nret = DaSetSamplingConfig(hDeviceHandle,&gConfig); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; nret = DaClearSamplingData(hDeviceHandle); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; nret = DaSetSamplingData(hDeviceHandle,&gwSmplData,200); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; nret = DaStartSampling(hDeviceHandle,FLAG_ASYNC); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; 24
List 1-9 CDaOutputView OnDastop void CDaOutputView::OnDastop() { INT nret; nret = DaStopSampling(hDeviceHandle); if(nret!= 0){ AfxMessageBox(""); 05 V 100 Hz V GND T T=10ms V=5.00 V 4-20 25
List 1-7 List 1-7 1 16 PCI-3310 00x0 655350xFFFF 200 200 65536 List 1-7 0 0V 65535 5V 4-21 gwsmpldata gwsmpldata0=0x8000; gwsmpldata1=0x8400; gwsmpldata50=0xffff; gwsmpldata198=0x77ff; gwsmpldata199=0x7bff; 26
DaSetBoardConfig DaSetBoardConfig 2 3 4 5 NULL 5 DaSetSamplingConfig DASMPLREQ List 1-8 DASMPLREQ gconfig gconfig.ulsmplrepeat = 0; = gconfig.fsmplfreq = 20000; =20kHz gconfig.smplchreq(0).ulchno = 1; = 1 gconfig.smplchreq(0).ulrange = DA_0_5V; =0V5V 20kHz 1 0V5V DASMPLREQ List 1-5 27
DLL DASMPLREQ DASMPLCHREQ List 1-8 ulsmplrepeatgwsmpldatagwsmpldata 0gwSmplData199 gwsmpldata 1 ulsmplfreqgwsmpldata Hz 20000=20 khz 50s=1/20 khz gwsmpldata V gwsmpldata1 gwsmpldata0 0 50 100 150 図 4-22 28
50s200=10 ms 10 ms 1 110 ms=100 Hz ulsmplfreq ulchnoulrange 1 0V5V 1DA_0_5V 1 DaClearSamplingData DaSetSamplingData 使 用 例 DaSetSamplingData 2 3 List 1-8 200 200 29
DaStartSampling 2 FLAG_SYNC DaSetSamplingConfig FLAG_ASYNC DaSetSampling ulrepeat 0 DaStopSampling DaStopSampling PCI-3305 30
4.2. V 5 1. ID ID_OUTRECT 4-23 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 2. OnOutrect Class Wizard DaOutput CDaOutputView ID ID_OUTRECT COMMAND 3. FileView SourceFile DaOutputView.cpp Outrect List 2-1 CDaOutputView OnOutrect void CDaOutputView::OnOutrect() { INT ncount; WORD wmax; WORD wmin; 8 wmax = 0xff; wmin = 0; 12 wmax = 0xfff; wmin = 0; 16 wmax = 0xffff; wmin = 0; for(ncount = 0;nCount < 200;nCount++){ if(ncount < 100) gwsmpldata[ncount] = wmax; else gwsmpldata[ncount] = wmin; 05V 100 Hz 31
4.3. V 5 4.5 1. ID ID_OUTSAW 4-24 4 3.5 3 2.5 2 1.5 1 0.5 0 2. OnOutsaw Class Wizard DaOutput CDaOutputView ID ID_OUTSAW COMMAND 3. FileView SourceFile DaOutputView.cpp Outsaw List 3-1 CDaOutputView OnOutsaw void CDaOutputView::OnOutsaw() { INT ncount; WORD wmax; WORD wmin; 8 wmax = 0xff; wmin = 0; 12 wmax = 0xfff; wmin = 0; 16 wmax = 0xffff; wmin = 0; for(ncount = 0;nCount < 200;nCount++){ gwsmpldata[ncount] = ncount * wmax / 200; 05V 100Hz 32
4.4. V 5 1. ID ID_OUTTRI 4-25 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 2. OnOuttri Class Wizard DaOutput CDaOutputView ID ID_OUTTRI COMMAND 3. FileView SourceFile DaOutputView.cpp Outtri List 4-1 CDaOutputView OnOuttri void CDaOutputView::OnOuttri() { INT ncount; WORD wmax; WORD wmin; 8 wmax = 0xff; wmin = 0; 12 wmax = 0xfff; wmin = 0; 16 wmax = 0xffff; wmin = 0; for(ncount = 0;nCount < 200;nCount++){ if(ncount <= 100) gwsmpldata[ncount] = ncount * wmax / 100; else gwsmpldata[ncount] = wmax - (ncount * wmax / 100); 05V 100Hz 33
4.5. gwsmpldata List 5-1,List 5-2 List5-1 double dcount; for(ncount = 0;nCount < 200;nCount++){ dcount = (ncount - 100.0) / 100.0; if(ncount % 2) gwsmpldata[ncount] = (WORD)(2 * wmid * (dcount * sqrt(1 - pow(k,2))) + wmid); else gwsmpldata[ncount] = (WORD)(-2 * wmid * (dcount * sqrt(1 - pow(k,2))) + wmid); List 5-2 double dcount; for(ncount = 0;nCount < 200;nCount++){ dcount = (ncount - 100.0) / 100.0; if(ncount % 2) gwsmpldata[ncount] = (WORD)(wMid * (pow(pow(dcount,2),(1 / 3)) + sqrt(1 - pow(dcount,2)))); else gwsmpldata[ncount] = (WORD)(wMid * (pow(pow(dcount,2),(1 / 3)) - sqrt(1 - pow(dcount,2)))); 34
4.6. 1. CallBackProc CDAView 2. List1-8 OnDastart List -1 CDaOutputView CallBackProc void CALLBACK CallBackProc(DWORD dwuser){ MessageBox(NULL,"","",MB_SETFOREGROUND); CloseHandle((HANDLE)dwUser); List -2 CDaOutputView OnDastart void CDaOutputView::OnDastart() { INT nret; HANDLE hevent; hevent = CreateEvent(0,FALSE,FALSE,NULL); nret = DaSetBoardConfig(hDeviceHandle,200,hEvent,CallBackProc,(ULONG)hEvent); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; gconfig.ulsmplrepeat = 0; gconfig.fsmplfreq = 20000; gconfig.smplchreq[0].ulchno = 1; gconfig.smplchreq[0].ulrange = DA_0_5V; 20kHz 0V5V nret = DaSetSamplingConfig(hDeviceHandle,&gConfig); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; nret = DaClearSamplingData(hDeviceHandle); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; nret = DaSetSamplingData(hDeviceHandle,&gwSmplData,200); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; 35
nret = DaStartSampling(hDeviceHandle,FLAG_ASYNC); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); return; 図 4-26 DaSetBoardConfig DaSetBoardConfig 3 4 5 CallBackProc DaSetBoardConfig dwuser 36
4.7. FbiDa.DLL CSVComma Separated Value Step1. 1. Visual C++DaFileOut 2. FBIDA.LIB FBIDA.H fbida.lib 3. ID ID_FILEOUT 4-27 4. OnFileout DaFileOut CDaFileOutView ID ID_FILEOUT COMMAND Step. Microsoft Excel CSV 37
1. List 7-1 2. DATA.CSV List -1 CSV 2.500000 2.813333 3.121724 3.420311 3.704384 3.969463 4.211367 4.426283 4.610819 4.762067 4.877641 4.955718 4.995066 4.995066 4.955718 4.877641 4.762067 4.610819 4.426283 4.211367 3.969463 3.704384 3.420311 3.121724 2.813333 2.500000 2.186666 1.878275 1.579688 1.295615 1.030536 0.788632 0.573716 0.389180 0.237932 0.122358 0.044281 0.004933 0.004933 0.044281 0.122358 0.237932 0.389180 0.573716 0.788632 1.030536 1.295615 1.579688 1.878275 2.186666 38
Step. 1. FileView SourceFile DaFileOutView.cpp #include fbida.h List7-2 List -2 fbida.h DaFileOutView.cpp : CDaFileOutView #include "stdafx.h" #include "DaFileOut.h" #include "DaFileOutDoc.h" #include "DaFileOutView.h" #include "fbida.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = FILE ; #endif 2. ClassView CDaFileOutView OnFileout List7-3 List - CDaFileOutView OnFileout void CDaFileOutView::OnFileout() { TODO: FILE *fp; HANDLE hdevicehandle; DASMPLREQ Config; DASMPLREQ INT nret; INT nfilecount; char sztemp[40]; nfilecount = 0; hdevicehandle = DaOpen("FBIDA1"); if(hdevicehandle == INVALID_HANDLE_VALUE){ AfxMessageBox(""); return; fp = fopen("data.csv","r"); while(fgets(sztemp,20,fp)!= NULL) nfilecount++; fclose(fp); nret = DaSetBoardConfig(hDeviceHandle,nFilecount,NULL,NULL,0); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DaClose(hDeviceHandle); return; 39
nret = DaGetSamplingConfig(hDeviceHandle, &Config); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DaClose(hDeviceHandle); return; Config.fSmplFreq = 5000; = 5kHz Config.SmplChReq[0].ulChNo = 1; = 1 Config.SmplChReq[0].ulRange = DA_0_5V; = 0V5V nret = DaSetSamplingConfig(hDeviceHandle, &Config); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DaClose(hDeviceHandle); return; nret = DaClearSamplingData(hDeviceHandle); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DaClose(hDeviceHandle); return; nret = DaStartFileSampling( hdevicehandle, "DATA.CSV", FLAG_CSV, nfilecount); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DaClose(hDeviceHandle); return; AfxMessageBox(""); nret = DaClose(hDeviceHandle); if(nret!= DA_ERROR_SUCCESS){ AfxMessageBox(""); DATA.CSV 1 4-28 40
4-29 CSV CSV DATA.CSV 1 1, 2 2.500000,2.500000 2.813333,2.813333 3.121724,3.121724 3.420311,3.420311 3.704384,3.704384 List7-3 DaStartFileSampling CSV DLL 41
50 Visual C++BPC-0810SAMP.CSV 2 List 7-3 DA_5V DATA.CSVSAMP.CSV List - CDaFileOutView OnFileout Config.fSmplFreq = 5000; = 5kHz Config.SmplChReq[0].ulChNo = 1; = 1 Config.SmplChReq[0].ulRange = DA_5V; = -5V5V 42
FbiDa.DLL 5. DLL 5.1. FbiDa.DLL DaOpen HANDLE DaOpen(LPCTSTR lpszname); lpszname INVALID_HANDLE_VALUE INVALID_HANDLE_VALUE 0xFFFFFFFFh-1 Windows 2000/Me/98/95 FbiPciDa DA DAWAVESMP.EXE Windows NT DA DAWAVESMP.EXE DaClose INT DaClose(HANDLEhDeviceHandle); hdevicehandle 0 0 DaGetDeviceInfo INT DaGetDeviceInfo(HANDLE hdevicehandle,pdaboardspec pboardspec); hdevicehandle pboardspec DA (DABOARDSPEC ) 0 0 43
FbiDa.DLL DaSetBoardConfig INT DaSetBoardConfig(HANDLE hdevicehandle,ulong ulsmplbuffersize,handle hevent,lpdacallback lpcallbackproc,dword dwuser); hdevicehandle ulsmplbuffersize hevent lpcallbackproc dwuser 1024 Visual C++ NULL Visual C++ NULL 0 0 0 0 CallBackProc DaGetBoardConfig INT DaGetBoardConfig(HANDLE hdevicehandle,ulong *ulsmplbuffersize,ulong *ulsmpleventfactor); hdevicehandle ulsmplbuffersize ulsmpleventfactor DA_EVENT_STOP_TRIGGER DA_EVENT_STOP_FUNCTION DA_EVENT_STOP_SAMPLING DA_EVENT_RESET_IN DA_EVENT_CURRENT_OFF 0 0 44
FbiDa.DLL DaSetSamplingConfig INT DaSetSamplingConfig(HANDLE hdevicehandle,pdasmplreq pdasmplconfig); hdevicehandle pdasmplconfig (DASMPLREQ ) 0 0 DaGetSamplingConfig INT DaGetSamplingConfig(HANDLE hdevicehandle, PDASMPLREQ pdasmplconfig); hdevicehandle pdasmplconfig (DASMPLREQ ) 0 0 DaSetMode PCI-3305 PCI-3310 PCI-3336 PCI-3340 EXCLK OUT INT DaSetMode(HANDLE hdevicehandle,pdamodereq pdamode); hdevicehandle pdamode (DAMODEREQ ) 0 0 PCI-3305 EXCLK OUT 45
FbiDa.DLL EXCLK OUT DAMODEREQ ulexclock DA_EXCLK_IN DA_EXCLK_OUT DaGetMode PCI-3305 PCI-3310 PCI-3336 PCI-3340 EXCLK OUT INT DaGetMode(HANDLE hdevicehandle,pdamodereq pdamode); hdevicehandle pdamode (DAMODEREQ ) 0 0 PCI-3305 EXCLK OUT EXCLK OUT DAMODEREQ ulexclock DaSetSamplingData INT DaSetSamplingData(HANDLE hdevicehandle,pvoid psmpldata,ulong ulsmpldatanum); hdevicehandle psmpldata ulsmpldatanum 0 0 DaStartSampling PCI-3335,3337 PCI-3305 46
FbiDa.DLL DaClearSamplingData INT DaSetSamplingData(HANDLE hdevicehandle); hdevicehandle 0 0 DaStartSampling INT DaStartSampling(HANDLE hdevicehandle,ulong ulsyncflag); hdevicehandle ulsyncflag FLAG_SYNC FLAG_ASYNC 0 0 DaSetSamplingData ( ) (FLAG_SYNC) FLAG_ASYNC API WIN32API WaitForSingleObject DaStopSampling DASMPLREQ ulsmplrepeat 0 0 47
FbiDa.DLL DaStartFileSampling INT DaStartFileSampling(HANDLE hdevicehandle, LPCTSTR pszpathname, ULONG ulfileflag, ULONG ulsmplnum); hdevicehandle pszpathname ulfileflag FLAG_BIN FLAG_CSV CSV ulsmplnum 0 0 CSV DaSyncSampling INT DaSyncSampling(HANDLE hdevicehandle, ULONG ulmode); hdevicehandle ulmode DA_MASTER_MODE DA_SLAVE_MODE 0 0 PCI-3340[11] PCI-3310[12]PCI-3336[12]PCI-3522APCI-3523A DaStartSampling FLAG_SYNCFLAG_ASYNC DaSetBoardConfig DaStopSampling DaSetSamplingConfig DaSetMode 48
FbiDa.DLL DA I/O DI 1 DaStopSampling INT DaStopSampling(HANDLE hdevicehandle); hdevicehandle 0 0 DaGetStatus INT DaGetStatus(HANDLE hdevicehandle, ULONG *uldasmplstatus, ULONG *uldasmplcount, ULONG *uldaavailcount, ULONG *uldaavailrepeat); hdevicehandle uldasmplstatus DA_STATUS_STOP_SAMPLING DA_STATUS_WAIT_TRIGGER DA_STATUS_NOW_SAMPLING uldasmplcount uldaavailcount uldaavailrepeat 0 0 49
FbiDa.DLL DaOutputDA 1 INT DaOutputDA(HANDLE hdevicehandle,ulong ulch,pdasmplchreq psmplchreq); hdevicehandle ulch pdasmplchreq pdata (DASMPLCHREQ ) lpdata 0 0 DaStartSampling ulch 1 ( 1,3,5,7 4 ) DASMPLCHREQ () ulchno DaInputDI INT DaInputDI(HANDLE hdevicehandle,puint pudata); hdevicehandle pudata 0 0 DaOutputDO INT DaOutputDO(HANDLE hdevicehandle,uint udata); hdevicehandle udata 0 0 50
FbiDa.DLL DaAdjustVR INT DaAdjustVR(HANDLE hdevicehandle,ulong uladjustch, ULONG ulselvolume,ulong uldirection, ULONG ultap); hdevicehandle uladjustch ulselvolume DA_ADJUST_BIOFFSET DA_ADJUST_UNIOFFSET DA_ADJUST_BIGAIN DA_ADJUST_UNIGAIN uldirection DA_ADJUST_UP DA_ADJUST_DOWN DA_ADJUST_STORE DA_ADJUST_STANDBY DA_ADJUST_NOT_STORE ultap 1100 0 0 PCI-3305,3325,3329,3338 DA_ERROR_NOT_SUPPORTED CallBackProc LPDACALLBACK CallBackProc(DWORD dwuser ); dwuser DaSetBoardConfig dwuser CallBackProc DaSetBoardConfig 3 CallBackProc CallBackProc 51
FbiDaDC.DLL 5.2. FbiDaDC.DLL DaDataConv usrcformcode psrcdata DA_DATA_PHYSICAL DA_DATA_BIN8 DA_DATA_BIN12 DA_DATA_BIN16 DA_DATA_BIN24 ([V][mA]) 8bit 12bit 16bit 24bit psrcdata psrcsmplreq usrcsmpldatanum udestformcode (DASMPLREQ ) pdestdata DA_DATA_PHYSICAL DA_DATA_BIN8 DA_DATA_BIN12 DA_DATA_BIN16 DA_DATA_BIN24 ([V][mA]) 8bit 12bit 16bit 24bit pdestdata pudestsmpldatanum pdestsmplreq ueffect (DASMPLREQ ) 0 0 DA_CONV_SMOOTH DA_CONV_AVERAGE1 DA_CONV_AVERAGE2 ucount lpfnconv ueffect ueffect 0 ucount lpfnconv NULL 0 0 52
FbiDaDC.DLL psrcdata pdestdata 1kHz 1000 10 100Hz 100 lpfnconv fnconv DaWriteFile CSV INT DaWriteFile(LPCTSTR pszpathname,pvoid psmpldata,ulong ulformcode,ulong ulsmplnum,ulong ulchcount); pszpathname psmpldata ulformcode ulsmplnum ulchcount DA_DATA_PHYSICAL ([V][mA]) DA_DATA_BIN8 8bit DA_DATA_BIN12 12bit DA_DATA_BIN16 16bit DA_DATA_BIN24 24bit 0 0 CSV fnconv DaDataConv CONVPROC fnconv(int nch,dword dwcount,pvoid lpdata); nch dwcount lpdata nch lpdata lpdata DaDataConv fnconv DaDataConv lpfnconv fnconv fnconv fnconv 1 lpdata lpdata 53
DA_ERROR_SUCCESS 0 DA_ERROR_NOT_DEVICE 0xC0000001 DA_ERROR_NOT_OPEN 0xC0000002 DA_ERROR_INVALID_HANDLE 0xC0000003 DA_ERROR_ALREADY_OPEN 0xC0000004 OPEN OPEN DA_ERROR_NOT_SUPPORTED 0xC0000009 DA_ERROR_NOW_SAMPLING 0xC0001001 DA_ERROR_STOP_SAMPLING 0xC0001002 DA_ERROR_START_SAMPLING 0xC0001003 DA_ERROR_SAMPLING_TIMEOUT 0xC0001004 DA_ERROR_INVALID_PARAMETER 0xC0001021 DA_ERROR_ILLEGAL_PARAMETER 0xC0001022 DA_ERROR_NULL_POINTER 0xC0001023 NULL DA_ERROR_SET_DATA 0xC0001024 DA_ERROR_FILE_OPEN 0xC0001041 DA_ERROR_FILE_CLOSE 0xC0001042 DA_ERROR_FILE_READ 0xC0001043 DA_ERROR_FILE_WRITE 0xC0001044 DA_ERROR_INVALID_DATA_FORMAT 0xC0001061 DA_ERROR_INVALID_AVERAGE_OR_SM 0xC0001062 OOTHING DA_ERROR_INVALID_SOURCE_DATA 0xC0001063 DA_ERROR_NOT_ALLOCATE_MEMORY 0xC0001081 DA_ERROR_NOT_LOAD_DLL 0xC0001082 DLL DA_ERROR_CALL_DLL 0xC0001083 DLL 54
5.3. Visual C++ DASMPLREQ typedef struct { ULONG ulchcount; DASMPLCHREQ SmplChReq[256]; ULONG ulsamplingmode; FLOAT fsmplfreq; ULONG ulsmplrepeat; ULONG ultrigmode; ULONG ultrigpoint; ULONG ultrigdelay; ULONG uleclkedge; ULONG ultrigedge; ULONG ultrigdi; DASMPLREQ, *PDASMPLREQ; ulchcount SmplChReq ulsamplingmode 1 DASMPLCHREQ ulchno 1 (DASMPLCHREQ ) DA_IO_SAMPLING DA_MEM_SAMPLING I/O fsmplfreq ulsmplrepeat ultrigmode 0.01f Hz 0.0f 165535 ulsmplrepeat 0 DaStopSampling 0 DA_FREERUN DA_EXTTRG DA_EXTTRG_DI () DI ultrigpoint DA_TRIG_START DA_TRIG_STOP DA_TRIG_START_STOP () ultrigdelay uleclkedge ultrigmode ultrigpoint DA_TRIG_START_STOP ultrigdelay 1 1G (1073741824) 0 0 1 fsmplfreq 0.0f 55
DA_DOWN_EDGE DA_UP_EDGE () ultrigedge 1 ultrigmode DI DA_DOWN_EDGE DA_UP_EDGE () ultrigdi ultrigdi 16bit 1bit 1 1 bit Low 1 bit ultrigmode DI ultrigdi 0 DASMPLCHREQ typedef struct { ULONG ulchno; ULONG ulrange; DASMPLCHREQ, *PDASMPLCHREQ; ulchno SmplChReq ulchno DA_0_1V 01V DA_0_2P5V 02.5V DA_0_5V 05V DA_0_10V 010V DA_1_5V 15V DA_0_20mA 020mA DA_4_20mA 420mA DA_1V ±1V DA_2P5V ±2.5V DA_5V ±5V DA_10V ±10V 56
DABOARDSPEC typedef struct { ULONG ulboardtype; ULONG ulboardid; ULONG ulsamplingmode; ULONG ulchcount; ULONG ulresolution; ULONG ulrange; ULONG ulisolation; ULONG uldi; ULONG uldo; DABOARDSPEC, *PDABOARDSPEC; ulboardtype ulboardid ulsamplingmode PCI-3329 3329 RSW 1 bit0 I/O bit1 FIFO bit2 bit3bit31 ( 0) ulchcount ulresolution ulrange bit0 01V bit1 02.5V bit2 05V bit3 010V bit4 15V bit5bit11 ( 0) bit12 020mA bit13 420mA bit14bit15 ( 0) bit16 ±1V bit17 2.5V bit18 ±5V bit19 ±10V bit20bit31 ( 0) ulisolation DA_ISOLATION DA_NOT_ISOLATION uldi uldo 57
DAMODEREQ PCI-3305PCI-3310PCI-3336PCI-3340 Typedef struct { DAMODECHREQ ModeChReq[2]; ULONG ulpulsemode; ULONG ulsyntheout; ULONG ulinterval; FLOAT fintervalcycle; ULONG ulcounterclear; ULONG uldalatch; ULONG ulsamplingclock; ULONG ulexcontrol; ULONG ulexclock; DAMODEREQ, *PDAMODEREQ; ModeChReq ulpulsemode (DAMODECHREQ ) [0][1] DA_MODE_CUT DA_MODE_SYNTHE TBWG(Time Based Wave Generation) FBWG(Frequency Based Wave Generation) ulsyntheout ulinterval FBWG 1,2,4,8,,16,32,64,128,256,512,1024,2048,4096,8192,16384 32768,65536,131072,262144,524288 DA_REPEAT_NONINTERVAL DA_REPEAT_INTERVAL fintervalcycle ulcounterclear 0.01f2500000f2.5MHzHz 1.0f(1Hz) DA_COUNTER_CLEAR DA_COUNTER_NONCLEAR () uldalatch DA DA_LATCH_CLEAR DA_LATCH_NONCLEAR DA () DA ulsamplingclock 8254 2.5MHz 5MHz DA_CLOCK_TIMER DA_CLOCK_FIXED 82542.5MHz () 5MHz ulexcontrol CN3 ) 58
DA_EXTRG_IN DA_EXTRG_OUT () ulexclock CN4 ) DA_EXCLK_IN DA_EXCLK_OUT () DAMODECHREQ PCI-3305PCI-3310PCI-3336PCI-3340 typedef struct { ULONG ulrange; FLOAT fvolt; ULONG ulfilter; DAMODECHREQ, *PDAMODECHREQ; ulrange DA_RANGE_UNIPOLAR DA_RANGE_BIPOLAR () fvolt ulfilter ulrange 1.02410.0[V] 0.0025[V] 5.0[V] 05[V]5[V] DA_FILTER_OFF DA_FILTER_ON () 59
5.4. Visual C++ ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define FLAG_SYNC 1 #define FLAG_ASYNC 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define FLAG_BIN 1 #define FLAG_CSV 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_STATUS_STOP_SAMPLING 1 #define DA_STATUS_WAIT_TRIGGER 2 #define DA_STATUS_NOW_SAMPLING 3 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_EVENT_STOP_TRIGGER 1 #define DA_EVENT_STOP_FUNCTION 2 #define DA_EVENT_STOP_SAMPLING 3 #define DA_EVENT_RESET_IN 4 #define DA_EVENT_CURRENT_OFF 5 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_ADJUST_BIOFFSET 1 #define DA_ADJUST_UNIOFFSET 2 #define DA_ADJUST_BIGAIN 3 #define DA_ADJUST_UNIGAIN 4 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_ADJUST_UP 1 #define DA_ADJUST_DOWN 2 #define DA_ADJUST_STORE 3 #define DA_ADJUST_STANDBY 4 #define DA_ADJUST_NOT_STORE 5 60
----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_DATA_PHYSICAL 1 ([V]/[mA]) #define DA_DATA_BIN8 2 8bit #define DA_DATA_BIN12 3 12bit #define DA_DATA_BIN16 4 16bit #define DA_DATA_BIN24 5 24bit ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_CONV_SMOOTH 1 #define DA_CONV_AVERAGE1 0x100 #define DA_CONV_AVERAGE2 0x200 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_IO_SAMPLING 1 I/O #define DA_FIFO_SAMPLING 2 FIFO #define DA_MEM_SAMPLING 4 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_TRIG_START 1 () #define DA_TRIG_STOP 2 #define DA_TRIG_START_STOP 3 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_FREERUN 1 () #define DA_EXTTRG 2 #define DA_EXTTRG_DI 3 +DI ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_DOWN_EDGE 1 () #define DA_UP_EDGE 2 61
----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_0_1V 0x00000001 01V #define DA_0_2P5V 0x00000002 02.5V #define DA_0_5V 0x00000004 05V #define DA_0_10V 0x00000008 010V #define DA_1_5V 0x00000010 15V #define DA_0_20mA 0x00001000 020mA #define DA_4_20mA 0x00002000 420mA #define DA_1V 0x00010000 1V #define DA_2P5V 0x00020000 2.5V #define DA_5V 0x00040000 5V #define DA_10V 0x00080000 10V ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_ISOLATION 1 #define DA_NOT_ISOLATION 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_RANGE_UNIPOLAR 1 #define DA_RANGE_BIPOLAR 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_MODE_CUT 1 #define DA_MODE_SYNTHE 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_REPEAT_NONINTERVAL 1 #define DA_REPEAT_INTERVAL 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_COUNTER_CLEAR 1 #define DA_COUNTER_NONCLEAR 2 ----------------------------------------------------------------------------------------------- DA ----------------------------------------------------------------------------------------------- #define DA_LATCH_CLEAR 1 DA #define DA_LATCH_NONCLEAR 2 DA 62
----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_CLOCK_TIMER 1 #define DA_CLOCK_FIXED 2 5MHz ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_EXTRG_IN 1 #define DA_EXTRG_OUT 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_EXCLK_IN 1 #define DA_EXCLK_OUT 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_FILTER_OFF 1 #define DA_FILTER_ON 2 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- #define DA_MASTER_MODE 1 #define DA_SLAVE_MODE 2 63
A/D 1993 1995 64
Web site(www.interface.co.jp) 65
Visual C++ DA 2000 11 Ver. 1.0 Dream & Freedom 本 ドキュメントの 一 部 または 全 てを 弊 社 の 許 可 なく ISD-7015-10 2,000 株 式 会 社 本 複 写 ドキュメントの 複 製 転 載 一 部 電 または 子 化 することを 全 てを 弊 禁 社 じます の 許 可 なく 732-0828 複 写 10-21 複 製 転 載 電 子 化 することを 禁 じます TEL 082-262-7777 FAX 082-262-5066
Visual C++ DADigital To Analog TUT-0022Ver1.0 www.interface.co.jp