USB连续采集卡 wwSFIFO模块说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USB连续采集卡 wwSFIFO模块说明
●针对USB连续采集模块的应用
●以DLL方式提供采集缓冲及内存管理函数
●功能:实现任意长度采集数据的读出
北京双诺测控技术有限公司
2009 10
目录
目录 (2)
实现功能 (2)
使用方法 (2)
函数说明 (2)
操作流程 (5)
实现功能
该动态库主要是针对客户要求连续采集卡返回定长数据开发的。
通过调用该动态库的函数客户可以返回定长采样数据。
文件目录 \USB\SFIFO
使用方法
客户使用前学要将该动态库WWSFIFO.DLL复制到当前目录下。
VC客户需要将WWSFIFO.H,WWSFIFO.lib文件同时复制到当前目录下。
完成以上步骤就可以调用WWSFIFO.DLL中的函数进行读取定长采样数据了。
以上文件在光盘\USB\定长存储模块\
函数说明
wwSFIFO模块包函数分为:
1.模块信息函数:用于返回模块的版本信息,主要包括可以创建的内存空间个数。
2.创建内存空间函数:创建客户要求大小的内存空间。
3.写函数:将数据写入创建的内存空间。
4.查询函数:查询内存空间的数据长度。
5.读函数:从内存空间中读取定长的数据。
6.释放内存空间函数:释放创建的内存空间。
该模块通过不同的index号来区分多个内存空间,应用ww_SFIFO_Information可以得到可创建内存空间的个数。
文件目录 \USB\SFIFO
❑为编号为index的板卡开辟内存空间用于保存采样数据
函数:long ww_SFIFO_Create (long index, long FLEN)
功能:为第index块卡开辟内存空间。
参数:
✧index:板卡的序号,如0、1、2…,基础版本只支持一块板卡,因此index=0
✧FLEN:sfifo 可以容纳的最大采样点数
✧返回值:0创建成功, -1 内存不足, -2 错误板号…
注:
建议用户开辟内存空间的大小在秒级以上,如果开辟空间太小没必要用该模块去实现。
sfifo 定义为_int32类型,最大支持32位有符号数
❑释放编号为index的板卡开辟内存空间
函数:long ww_SFIFO_Close(long index)
功能:释放编号为num的板卡开辟内存空间
参数:
✧index:板卡的序号,如0、1、2…
✧返回值:0释放成功,-1失败,-2 错误板号…
❑读取板卡信息
函数:long ww_SFIFO_Information (char *pversion)
功能:读取板卡信息
参数:
✧pversion:板卡信息。
✧返回值:最多支持的板卡数。
❑保存采样值到内存空间
函数:long ww_SFIFO_Write (long index, long wlen, long* wdata)
功能:保存采样值到内存空间。
参数:
✧index:板卡的序号,如0、1、2…
✧*writedata:写入内存空间的采样值。
✧wlen:写入的长度。
✧返回值:0写操作成功,-1错误板号
❑定长回读内存中采样数据
函数:long ww_SFIFO_Read(long index, long rlen, long* readdata)
✧index:板卡的序号,如0、1、2…
✧*readdata:指向存储回读数据数组的指针,要求数组容量大于用户定义的长度length。
用户获取数据及长度后,必须在下次调用前将数据存储到另外的数组或硬盘中,以免下次调用覆盖了以前的数据。
✧rlen:客户要求定长采集的长度。
✧返回值:=0读操作成功, -1错误板号, -2 fifo 溢出, -4 可读数据长度不足
注:rlen最好设置为通道的最大整数倍。
因为内存空间有限一种清苦设置的rlen过小而每次写入内存的数据很多,这样数据就会溢出原来的数据被覆盖,另一个种情况rlen过大这次回读不上来但是下次数据写入内存的时候也可能出现溢出。
❑查询可读回的采样数据长度
函数:long ww_SFIFO_Poll(long index)
✧index:板卡的序号,如0、1、2…
✧函数返回:>=0内存中可读数据的长度,-1错误板号, -2 fifo 溢出。
操作流程
1.首先通过ww_SFIFO_Information函数获得版本信息,返回可以创建内存空间的个
数。
(多卡动态库最多支持同时创建8个空间,单卡动态态库只支持创建1个内存
空间。
)
2.通过ww_SFIFO_Create函数创建内存空间。
判断返回值,如果返回值为-1,则说明
版本操作错误,超过该动态库支持最大内存空间数。
如果返回值为-3,则说明创建
的内存空间长度超范围。
3.在定时器中执行ww_SFIFO_Write函数,把数据写入创建的内存空间。
4.通过ww_SFIFO_Poll函数进行查询,判断返回值,如果返回值为-2,则说明数据没
有及时读取造成溢出。
返回值大于等于0,则为内存空间中可以读取的长度。
如果
可读程度没有达到客户的要求则返回第3步,接着执行写函数,直到返回长度达到
客户要求,执行第5步。
5.执行ww_SFIFO_Read函数,读取数据。
返回第3步,直到停止定时器执行第6步。
6.通过ww_SFIFO_Close函数,释放内存空间。
注:
该动态库分为两个版本,一个低级版本只支持一块板卡使用免费提供给客户。
如果需要可以支持多块卡(最多8块)同时使用的需要购买高级版本动态库。
针对该动态库使用提供了MFC例子。