YAV USB 接口采集卡二次开发即DLL使用手册USB6000 201804_第1页
YAV USB 接口采集卡二次开发即DLL使用手册USB6000 201804_第2页
YAV USB 接口采集卡二次开发即DLL使用手册USB6000 201804_第3页
YAV USB 接口采集卡二次开发即DLL使用手册USB6000 201804_第4页
YAV USB 接口采集卡二次开发即DLL使用手册USB6000 201804_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、YAV USB接口采集卡二次开发即DLL武汉亚为电子科技有限公司2018.04USB6000 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 版本说明3 HYPERLINK l bookmark12 o Current Document 64位开发平台使用方法3函数说明3 HYPERLINK l bookmark17 o Current Document 查找设备 FindDevice3 HYPERLINK l bookmark27 o Current Document 打开设备 OpenYavDevice4 HYPERLINK l

2、 bookmark37 o Current Document 读取数据GetYavData4 HYPERLINK l bookmark59 o Current Document 配置设备 SetYavParam5 HYPERLINK l bookmark66 o Current Document 单次读取数据 GetYavOnce6 HYPERLINK l bookmark79 o Current Document 单次设置数据 SetYavOnce6单次设置数据 SetYavOnce7 HYPERLINK l bookmark99 o Current Document 关闭设备 CloseY

3、avDevice7配置命令9 HYPERLINK l bookmark114 o Current Document 加载流程11 HYPERLINK l bookmark121 o Current Document 多卡同步使用11 HYPERLINK l bookmark128 o Current Document SDK及例程12 HYPERLINK l bookmark132 o Current Document labview 例程12 HYPERLINK l bookmark139 o Current Document VC例程12 HYPERLINK l bookmark149 o

4、 Current Document C#例程13 HYPERLINK l bookmark156 o Current Document Matlab 例程15 HYPERLINK l bookmark175 o Current Document Delhpi 例程15 HYPERLINK l bookmark185 o Current Document 其他平台例程16YAV USB接口采集卡二次开发及DLL使用手册武汉亚为电子科技有限公司版本说明版 本 号:ADIO86.dll(32 位开发平台)/ADIO64.dll(64 位开发平台),V20180115适用范围:带有YAV标识,或者武汉

5、亚为电子科技有限公司产品标注,且具备USB (包括但不限于 方口 USB、Micro USB)通信功能的采集卡,均可利用本指南。特别声明:该指南适应于2017年9月1日之后YAV采集卡64位开发平台使用方法YAV USB接口的采集卡,无需安装驱动,可利用ADIO86.dll与其他开发平台产生数据交互,dll基于 VS2010开发。部分操作系统加载dll时出错,需msvcr100d.dll、msvcr120d.dll配合使用,直接放ADIO86.dll 同文件夹下即可,如果是64位开发平台(注意:64位操作系统如果用的是32位开发平台,依然需要使用 ADIO86版本),可ADIO64.dll改名

6、为ADIO86.dll,替换并重启软件。该dll可用于通用开发平台,例如 VC+、VB、C#、Delphi 等。函数说明压调用ADIO86.dll,使用时多检查参数正确性,勿要过于怀疑函数本身。查找设备FindDeviceint FindDevice( void ),初始化DLL函数,返回设备数量n,返回0,表示没有识别任何设备,此函数推 荐单卡用户使用。int FindYavDevice( char *string ),初始化DLL函数,查找YAV设备,并返回设备数量n,返回0,表 示没有识别任何设备,此函数推荐多卡用户使用。string参数为亚为采集卡设备型号返回的字符串,声明长 度不小于

7、500字节。 HYPERLINK http:/ 武汉亚为电子科技有限公司客服电话.15727007467返回:n设备数量,0查找失败。例如 FindDevice(O)以上两种函数二选一,后者主要用于多卡同一电脑使用,不可两种函数同时都用。该函数如果无 法调用,证明用户开发平台DLL调用功能没有配置正确。打开设备 OpenYavDeviceint OpenY avDevice (unsigned short TaskID)返回:设备临时ID,返回数值大于254,表示硬件异常,一个卡就是0,两个卡就分别为0,1, 255失 败。TaskID: USB设备编号,单设备为0

8、 (默认),多个设备为0 1 2.。例如 OpenYavDevice (0)读取数据GetYavDataint GetYavData(unsigned short TaskID,int *DAQDataBuffer, unsigned int DataSize, int *YavParam, int *CNTBuffer, unsigned int *IOBuffer)返回:设备临时ID,返回数值大于254,表示硬件异常,其中255表示通信超时,256调用函数错误, 硬件通信失败。临时ID用于多卡同时连接于一个电脑。为了开发方便,此函数可在不调用FindDevice、OpenYavDevice

9、函数的情况下,单独使用,第一次 调用报错,第二次之后便可实现连续采集。例如 int DAQDataBuffer64=0,YavParaml=0,CNTBuffer2=0,IOBuffer2=0GetY avData(0,DAQDataBuffer,64,Y avParam,CNTBuffer,IOBuffer)其中:TaskID: USB设备编号,单设备为0 (默认),多个设备为0 1 2.。DAQDataBuffer:缓存数据数组,初始化长度必须大于DataSize; LabVIEW中数据类型为无符号32位 整形,其他平台均为unsigned int。数据根据通道数全通道交叉排列,【X00

10、X01.X0N.X10 X11.X1N.XMN】,其中M是通道数,M由采集卡型号决定,N单次是采样长度,必须为64的整数 倍。例如两路采集卡,是 0 1 0 1,8路是 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7,16 路是 0 1 215 0 1 2,循环排列。数据解算:单极性采集卡,例如0-10V量程,AI精度12位,为无符号数,转换为十进制,除以4095, 再乘以量程。例如10V量程,再乘以10(实际电阻会有偏差,9.83会比较精确,具体可用其他第三方设备 做校准)会得到通道数据,即真值X*9.83/4095。正负量程的双极性采集卡,例如AI精度16 (或24位),

11、为有符号数,转换为十进制,除以2人(16-1)-1,再乘以量程。例如10V量程,再乘以20。DataSize:单次采样长度,必须为32的整数倍,例如32 256 512 1024 2048,最大为81920,是几个通 道加起来的数据长度,例如1024表示每个通道512,不可用其他数值,越小越快,越大每次采集的越多更 新越慢。为了显示通畅,一般设置为采样率的四分之一到一半,例如1k采样率,设置512为宜。YavParam:采集卡参数数组,初始化长度必须大于1。依次为报警、采样率、通道数、量程。具体参 数范围及含义见“配置命令一览表。CNTBuffer:数字量读数数组,初始化长度必须大于2。分别对

12、应通道1通道2计数/测频。lOBuffer: IO量状态数组,初始化长度必须大于2。分别对应DI、DO状态。0代表DI都为低电平,1 代表DI0高,DI1低,3代表都为高电平。Z%务必对每一个参数提供正确初始化值,尤其是数组必须注意长度,否则VBWC等平台调用会出现 错误或者崩溃。配置设备SetYavParamint SetY avParam(unsigned short TaskID,unsigned char CMD,unsigned char *SetParam )返回:CMD代表成功,非CMD表示失败。为了开发方便,此函数可在不调用FindDevice、OpenYavDevice函数的

13、情况下,单独使用,第一次 调用报错,第二次之后便可实现连续采集。例如 int SetParam 16=(0,1,43,4,56,67,8GetY avData(0,FD,SetParam)其中:TaskID: USB设备编号,单设备为0 (默认),多个设备为0 1 2.。CMD:命令参数,详见“配置命令一览表”。SetParam: SetParam数组功能详见“配置命令一览表,最多可一次性写入14个数据。该函数功能较多,可以控制采集卡的工作方式、设置采样率等等。例如设置采样率,其等级为05-0F, 对应十进制为5-15,对应200 500 1K 2K 5K 10K 20K 50K 100K 2

14、00K Hz(最高采样率根据卡型号视情而定)。SetYavParam(0,FA, A,0,0,0)设置设备0的采样率为10K。功能详见“配置命令一览表”。单次读取数据GetYavOnceint GetYavOnce(unsigned short TaskID, unsigned int *DAQDataBuffer)该函数为不用调用FindDevice OpenYavDevice GetYavData等函数,简易高速单次读取所有通道参数的 函数,能自动打开设备,读取后关闭设备的方法,简单易用,对于采样率要求不高的开发者非常实用。例如 int DAQDataBuffer36=0GetY avDa

15、ta(0,DAQDataBuffer)其中:TaskID: USB设备编号,单设备为0 (默认),多个设备为0 1 2.。DAQDataBuffer:缓存数据数组,初始化为36个长度的数组,0-31为通道AI,32-35分别为DI0DI1 的测频计数、DIDO。LabVIEW中数据类型为无符号32位整形,其他平台均为unsigned int。数据根据通道 数全通道交叉排列,【X00 X01.X0N.X10 X11.X1N.XMN】,其中M是通道数,M由采集卡型 号决定,N单次是采样长度。例如两路采集卡,是0 10 1.,8路是0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7.,1

16、6 路是0 1 215 0 1 2.,循环排列。单次设置数据SetYavOnceint SetY avOnce(unsigned short TaskID,unsigned char *YavParam)返回:1代表成功,非1失败例如 int YavParam16=0,1,2,3,4,5,6,6,7GetY avData(0,YavParam)其中:该函数为不用调用FindDevice OpenYavDevice SetYavParam等函数,简易高速单次读取所有通道参数 的函数,能自动打开设备,读取后关闭设备的方法,简单易用,对于采样率要求不高的开发者非常实用。YavParam:地址+命令+

17、数据,联合单次下发,最多可一次性写入16个数据。单次设置数据SetYavOnceintYavSencer(unsigned short TaskID, char *string, int *SencerData)返回:0代表成功,非1失败该函数为不用调用FindDevice OpenYavDevice SetYavParam等函数,简易高速单次读取亚为传感器的 数据,能自动打开设备。其中:TaskID: USB设备编号,单设备为0 (默认),多个设备为0 1 2.。string:传感器类型字符串,申请变量长度不小于20字符。SencerData:获取传感器数据数组,申请数组长度不小于5,返回几

18、组数据就代表几个关闭设备 CloseYavDeviceint CloseY avDevice(unsigned short TaskID)返回:1代表成功,非1失败例如 CloseYavDevice(0)YAV 2DI感应器(20180501版)函数说明1、int YavDI(),无参数,返回值转换为bool即为感应状态2、此函数循环调用,即可得到状态。3、状态数据时自动定时上发,每秒上发500次,不接收的会自动丢弃,不是询问,也不是硬件状态改 变了才触发。4、文件夹内必须包含ADIO86.dll动态库5、此函数为VC+开发,可供VC,VB,DELPHI,C#,LABVIEW,JAVA等平台调

19、用,调用方法非常简单, 请参考百度。6、64位软件开发平台请调用ADIO64.dll,32位软件开发平台请调用ADIO86.dll。z注意:YAV USB采集卡二次开发即DLL使用手册 本DLL适用于任何可以调用dll的开发平台,经过测试,目前能支持几乎所有平台所有版本的数据采集,不存在dll无法调用或者错误的情况。如果您在开发的过程中发现错误,多半是dll加载不正确,或者 输入的参数有误。64位平台注意加载ADIO64.dll,编译时注意选择x86还是x64。请注意数据类型,以及数组缓冲区大小。如果缓冲区太小,就会出现内存错误。所以申请数组,可以 尽量大一些空间。配置命令配置命令一览表序功能

20、命令参数数组16进制备注号CMDDOD1D2D3D4-131停止采集OxAO2单次采集0 xA13AI0触发采集0 xA2触发电平(高位)触发电平 (低位)长度 (高位)长度 (低位)需定制0-409632的整数倍4采集AI0高速采集0 xA35测频/计数0 xFC/0 xA8FF(CH0 测频)CC(CH0开始计数)FF(CH1 测频)CC(CH1开始 计数)测频/计数二选 一。双通道可 独立控制6AI连续采集0 xAAN(0-F)参考 FA默认7特殊采集0 xAF备用6读取校准系数0 xB0读漂移参数7CH0-3系数0 xB1AI0系数8位数组,可设置950-1250 默认1000,代表1

21、倍,1101代表1.101倍8CH4-7系数0 xB2AI8AI15系数8位数组9CH8-11系数0 xB3以上类推10系数CH12-15 系数0 xB41、用精密电压源(或精密电流源,具体由通道量程而定)作校准电源连到待校准11校准CH16-19 系数0 xB5通道AI和GND。12CH20-23 系数0 xB62、电源调节到通道量程的最大值(满量程),用UMS测量值除以信号源的实际13CH24-27 系数0 xB7值,换算为1000基准的数据,减900,以U8通过SetYavData函数发送下去。950-1250,14CH28-31 系数0 xB8默认1000,代表1倍,1101代表1.1

22、01倍。例如0.99倍,实际是990,U8的十六进制为0 x5A。硬件可记忆参数。发送数据为90,15读取零漂0 xC0可设置0-255I8,127 代表 0读漂移参数16CH0-3零漂0 xC117CH4-7零漂0 xC21、用精密电压源(或精密电流源,具体由通道量程而定)作校准电源连到待校准18零漂CH8-11零漂0 xC3通道AI和GND。19校准CH12-15 零漂0 xC42、将电源调节到通道量程的最小值(零点,一般是接GND,不可悬空),把数20CH16-19 零漂0 xC5值的16进制U8格式,用此命令,通过SetYavData函数发送下去。零漂一般都非常小,21CH20-23

23、零漂0 xC6例如0 x04。硬件可记忆参数。22CH24-27 零漂0 xC723CH28-31 零漂0 xC82425输出控制数字量DO控制0 xD00X00-0XFFD0每位BIT15-BIT0对应DO15-DO0,1:高电平输出,0:低电平输出26模拟量DA输出0 xDA通道号0-7高低低位后一通道类推输出3.3V,则3.3*4096/10,变为十六进制,再分配给高低位,12位27PWM输出频率0 xDB频率(高位)频率(低位)频率 (高位)频率 (低位)频率通道 1,1-FFFF 代表 1Hz65.535KHz通道2通道n28PWM输出占空比0 xDC占空比1占空比2占空比3占空比4

24、占空比n290-255 对应 0-100%30PWM输出0 xFD频率(高位)频率(低位)占空比1占空比2MAXMAX PRO两通道同频,1-FFFF代表1Hz65.535KHz每个通道占空比不同代表0-255 对应 0-100%通道号频率(高位)频率(低位)占空比14AD PLUS31辅助设备地址0 xDDN32恢复出厂0 xF033设备量程0 xF10X00-0XFF用户不可设置0-F 对应 0-100mV /3V /5V / 10V /15V /30V /60V 4-20mA 0-20mA 0-20mV -5-5V -10-10V -20-20V -30-30V -60-60V -20-

25、20mV,FF 代表前 后各一半通道的量程,例如38,也就是前一半是10V,后一半是 0-20mA量程34设备ID0 xF2用USB助手读35封锁控制0 xF300/F3用户不可控36信号处理0 xF400为默认备用37AI精度0 xF500默认精度,01为10位,02为12位,04为14位,06为16位,08位18位,09位24位用户不可设置38兼容性0 xF6备用39采集卡型号0 xF7接口类型,6 7 8通道数防护据命名规则表40功能0 xF875:754真值38:8 位 AD (U8)37:12位AD (U12无符号)36:16 位 ADCI16 有符号)35:24位AD(I32有符号

26、)21: DI高速22:测频(I32位)23:计数(I32位)24:计数(I32)测频(I16)25:编码器(I32计数I16测 频)用户不可设置41通道使能0 xF9FF开启全部,01开CH0,02开CH0和1不记忆42采样率0 xFA采样等级(05-0F)D0设置采样率等级的05-0F,对应十进制为5-15,对应200 500 1K 2K 5K 10K 20K 50K 100K 200K Hz (最高采样率根据卡型号视情而定)43重启0 xFB44测量测频/计数0 xFCFF(CH0 测频)CC(CH0开始计数)FF (CH1测频) CC(CH1 开 始计数)测频/计数二选 一。双通道可

27、独立控制45输出用户参数0 xDF备用46帮助版本信息0 xFE01, 201402, 2016050103, 20170901用USB助手读47帮助0 xFF用USB助手读说明:一代表参数无效,可以设置为0;代表部分采集卡不具备改功能;编程中不要频繁设置参数,否则影响采集速度。例如:设备0输出为高电平SetYavParam(0, D0, FF,0,0,0);设置PWM SetYavParam(0, FC,05,00,50,50)。设置的瞬间,影响采集速度。加载流程深色背景为必须操作的函数。读取数据返回255为超时。在采集速度要求较高的情况下, 不要反复配置设备参数与改变DO状态,否则影响采集

28、数据时间精度。多卡同步使用多卡同步使用,需要复制多份dll,根据卡的索引TaskID号(TaskID号自动分配,从0开 始,0、1、2、3.依次增加,先插入的为0),调用不同dll的函数。调用方法和上面一致。 读取数据,可以根据设备号(设备号用户可设置)解算数据。SDK及例程labview 例程注意:程序框图中重要参数不可调节,否则会引起系统崩溃,尤其是注明不可修改的部分。 以上框图,仅供参考,如有更新,恕不另行通知。VC例程仅供参考,具体以前文的函数说明为准。查找设备uint32_t FindDevice()uint32_t OpenYavDevice (uint_t ID)AI、DI 采集

29、Typedef int32_t (*GetYavData)( uint32_t ID, uint32_t *ADBuf, uintl6_t Len, int *YavParam, uint32_t *CNbuf, uint32_t *DIO);HINSTANCE hDLL;bool DI0;bool DI1;/float CH0;float CH1;unsigned int ADBuf4096=0;unsigned int Y avParam 2=0;unsigned int CNbuf 2=0;unsigned int DIO 2=0;pReadDeviceHID2BUF ReadDataV

30、iaHID2BUF;hDLL=LoadLibrary(HADIG 4.0.dll);具体要看 dll 的命名if(hDLL)GetYavData =(pReadDeviceHID2BUF)GetProcAddress(hDLL, GetYavData );if(GetYavData)(int res= GetYavData (0, ADBuf, 1024, YavParam, CNbuf , DIG);for (i=0 , i 1000)(x1.Clear();y1.Clear();x2.Clear();y2.Clear();x3.Clear();y3.Clear();x4.Clear();y

31、4.Clear();n = 0;for (int i = 0; i num / 2; i+)/2 为通道数,USB 2ADIO 设置 2,8AD 设置 8 16ad 设置 16(val1 = ADbuf2 * i *10.0/ 4096;val2 = ADbuf2 * i + 1 * 10.0 / 4096;x1.Add(n);y1.Add(float)val1);x2.Add(n);y2.Add(float)val2); n+;/for (int i = 0; i num / 8; i+)/2 为通道数,USB 2ADIO 设置 2,8AD 设置 8 16ad 设置 16 /(/ val1

32、= ADbuf8 * i * 10.0 / 4096;/val2= ADbuf8*i+1*10.0/ 4096;/val3= ADbuf8*i+2*10.0/ 4096;/val4= ADbuf8*i+3*10.0/ 4096;/val5= ADbuf8*i+4*10.0/ 4096;/val6= ADbuf8*i+5*10.0/ 4096;/val7= ADbuf8*i+6*10.0/ 4096;/val8= ADbuf8*i+7*10.0/ 4096;/x1.Add(n);/y1.Add(float)val 1);/x2.Add(n);/y2.Add(float)val2);/n+;/C#

33、: HYPERLINK http:/ http:/ 4.0.dll和ADIO 4.0.h文件拷贝到Matlab的当前工作目录下, 输入loadlibrary(ADIO 4.0, ADIO 4.0.h);(一定要有这步,如果dll不成功,会显示错误原因)查看DLL中导出的函数libfunctions MatlabDllTest -full-full选项会列出导出函数的详细输入和输出参数,这是输出信息如下:Functions in library MatlabDllTest:uint32_t FindDevice()uint32_t OpenYavDevice (uint_t ID)调用函数cal

34、llib( ADIO 4.0, OpenYavDevice , 0)此时就会输出正确的结果1Matlab: HYPERLINK http:/ http:/ 1,千万不要弄错! !function FindYavDevice(id:PInteger):integer;stdcall;external ADIO86.dll;/ 发现设备函数function OpenYavDevice(id:integer):integer;stdcall;external ADIO86.dll;/ 打开设备函数 function SetYavParam(id:integer;cmd:Byte;setparam:P

35、Char):integer;stdcall;external ADIO86.dll; 写设备命令函数functionGetYavData(id:integer;ADBuffer:PInteger;DataSize:Word;DABuffer:PInteger;CNTBuffer:PInteger;IOBuffer:PInteger):i nteger; stdcall;external ADIO86 .dll;/ 写设备命令函数function CloseYavDevice(id:integer):integer;stdcall;external ADIO86.dll;/ 关闭设备函数$R *

36、.dfmprocedure TFormLButton1Click(Sender: TObject); varAD: array0.1024 of Integer;DA: array0.4 of Integer;CNT: array0.2 of Integer;IO: array0.2 of Integer;ID:array0.2 of Integer;SETPARAM:array0.6 of Byte;beginedit1.text:=inttostr(FindYavDevice(ID);edit2. Text:=intto str(OpenYavDevice(0); edit3.Text:=inttostr(S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论