Visual C++によるDA入門書



Similar documents
TUT-0022

TUT-0023

Microsoft Visual Studio .NET移行ガイド

Visual C++によるAD入門書

Visual BasicによるAD入門書

untitled

Gpci4ソフト_下位DLL_説明書3版.PDF

CONTENTS Web

untitled

untitled

program.dvi

チュートリアル XP Embedded 入門編

2

新版明解C言語 実践編

quattro.PDF

CD Microsoft, MS-DOS, Windows 95, Windows 98,Windows Me, Windows NT, Windows 2000, Visual Basic, Visual Basic.NET, Visual C#, Excel, ActiveX Microsoft

AquesTalk Win Manual

AquesTalk プログラミングガイド

Audiophile USB

API-PAC(W32)RM/AIO

double float

DebugFactory Builder 4 for AMOTユーザーズマニュアル

新コンフィギュレータのフレームワークについて

Arduino UNO IS Report No. Report Medical Information System Laboratory

IO-PCIソフト仕様書3版.PDF

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10


WinDriver PCI Quick Start Guide

untitled

WinHPC ppt

CH1 ...g O...pmd

Microsoft Word - iMCs01Windowsマニュアル_v1_1.doc

: : : TSTank 2

2: 3: A, f, φ f(t = A sin(2πft + φ = A sin(ωt + φ ω 2πf 440Hz A ( ( 4 ( 5 f(t = sin(2πf 1t + sin(2πf 2 t = 2 sin(2πt(f 1 + f 2 /2 cos(2πt(f 1 f

Smalltalk_

C 資料 電脳梁山泊烏賊塾 MFC アプリケーション MFC アプリケーションの作成 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで MFC を選択し MFC(Micorosft Foundation Class) アプリケーションを作成する イ

アプリケーション補足説明書(Office2003)

lexex.dvi

Microsoft Word - C.....u.K...doc

C-ISAバス製品からPCIバス製品への移行マニュアル MS-DOS編 LAP-B [VCD-4115→GPD-4115への移行]

RS 175

DVD CD SoundRipper SoundRipper DVD SoundRipper DVD SoundRipper DVD CD DVD DVD DVD CD CD DVD " CD/DVD" DVD CSS DVD SoundRipper DVD-Video DVD DVD-ROM DV

新・明解C言語 実践編

CANチュートリアル

H H H H H H H H Windows IC USB WindowsXP+FZ1360 WindowsXP+FZ1350 J2SE Runtime Environment 5.0 Window

Linuxデバイスドライバチュートリアル

(2 Linux Mozilla [ ] [ ] [ ] [ ] URL 2 qkc, nkc ~/.cshrc (emacs 2 set path=($path /usr/meiji/pub/linux/bin tcsh b

Java演習(4) -- 変数と型 --

目 次 目 次 ScanSurveyZ 手 順 書... 1 目 次... 2 インストールガイド... 3 インストール 方 法... 3 アンインストール 方 法... 5 第 1 章 読 み 込 み 作 業 の 手 順 点 群 ファイル 読 み 込 み 保 存

r07.dvi

untitled

ohp07.dvi

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

Arduino Processing and ) Fig1. Arduino Homepage : h;p://

untitled

MEU-J284122

インテル(R) Visual Fortran Composer XE

joho07-1.ppt

シングルドキュメントの作成 新しいプロジェクトで MFC アプリケーションを選択すると アプリケーションの種類のオプションのダイアログが開くので アプリケーションの種類にシングルドキュメントを選択して 次へボタンをクリックする ( 此処で完了ボタンをクリックしても構わないが 不要なフレームペインを取

M G

FreeBSD 1

dicutil1_5_2.book

DL1720/DL1740ディジタルオシロスコープユーザーズマニュアル

NL-22/NL-32取扱説明書_操作編

mbed_library_study_meeting_v1.0.key

Microsoft PowerPoint - kougi2.ppt

AquesTalk2 Win マニュアル

DPC-0244

KLC - AE 2007 インストール・セットアップ・ガイド

解きながら学ぶC++入門編

MSC-J320312

東京で独立開業する。~独立開業マニュアル東弁版~

MPI MPI MPI.NET C# MPI Version2

法政大学理工学部創生科学科 小林一行研究室 YP-Spur をMATLAB で使うには? YP-Spur は,Linux ベースで開発されているようであるが,Windows でも使えるようなので, ここでは,Windows 版のMATLAB から使う方法を紹介する.YP-Spu

K227 Java 2

DPC-0401

WinDriver を使用して、簡単にデバイス ドライバを作成

C++ ++ Wago_io.dll DLLDynamicLinkLibrary Microsoft VisualBasic Visual C Wago_io.dll Wago_io.dll Wago_io.dll WAGO_OpenCommPort WAGO_CloseCommPort WAGO_

DAC121S101/DAC121S101Q 12-Bit Micro Power, RRO Digital-to-Analog Converter (jp)

Transcription:

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