完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用labview软件做一个数据采集程序,其中要用动态库的调用,提示“调用库函数节点调用的外部节点中出现一个异常。该异常可能引起LabVIEW内存坏块。在新位置保存工作并重启LabVIEW。”错误出现在“USB9825_ReadAD”函数这里,附上程序框图和原函数...
程序.rar
(124.61 KB, 下载次数: 72
)
补充内容 (2018-3-9 09:05): //AD初始化参数 #ifndef _USB9825_PARA_INIT typedef struct _USB9825_PARA_INIT { LONG lSelADClk; //时钟选择 LONG lChCnt; //通道选择 LONG ClkDeci; //分频因子 LONG TriggerMode; //触发模式 LONG TriggerSource; //触发源 LONG TriggerDelay; //触发延时 LONG TriggerLength; //触发长度 LONG TriggerLevel; //模拟触发电平 LONG lADFmt; //AD输出数据格式 } USB9825_PARA_INIT,*PUSB9825_PARA_INIT; #endif //时钟选择 typedef enum EmADClkSel { ADCLK_INT = 0, //板上时钟 ADCLK_EXT = 1 //板外时钟 } ADCLK_SEL; //触发模式 typedef enum EmTriggerMode { TRIG_MODE_CONtiNUE = 0, //连续采集 TRIG_MODE_POST = 1, //后触发 TRIG_MODE_DELAY = 2, //延时触发 TRIG_MODE_PRE = 3, //前触发,USB9825不支持 TRIG_MODE_MIDDLE = 4 //中触发,USB9825不支持 } TRIGGER_MODE; //触发源 typedef enum EmTriggerSource { TRIG_SRC_EXT_RISING = 0, //外正沿触发 TRIG_SRC_EXT_FALLING = 1, //外负沿触发 TRIG_SRC_SOFT_RISING = 2, //软件正沿触发 TRIG_SRC_SOFT_FALLING = 3, //软件负沿触发 TRIG_SRC_CH1_RISING = 4, //CH1正沿触发 TRIG_SRC_CH1_FALLING = 5, //CH1负沿触发 TRIG_SRC_CH2_RISING = 6, //CH2正沿触发 TRIG_SRC_CH2_FALLING = 7, //CH2负沿触发 TRIG_SRC_CH3_RISING = 8, //CH3正沿触发 TRIG_SRC_CH3_FALLING = 9, //CH3负沿触发 TRIG_SRC_CH4_RISING = 10, //CH4正沿触发 TRIG_SRC_CH_FALLING = 11, //CH4负沿触发 TRIG_SRC_INT_RISING = 12, //PWM正沿触发 TRIG_SRC_INT_FALLING = 13 //PWM负沿触发 } TRIGGER_SOURCE; //AD数据输出格式 typedef enum EmADFormat { ADFMT_STBIN = 0, //直接二进制输出 ADFMT_2SBIN = 1 //二进制补码输出 } AD_FORMAT; //读/写零偏 #define WRITEOFFSET 0 //写零偏 #define READOFFSET 1 //读零偏 //触发长度单位 #define TRIG_UNIT 32 #define READ_MAX_LEN 1572864L //最大读取长度 /***********************************************************/ #ifndef DEFINING #define DEVAPI __declspec(dllimport) #else #define DEVAPI __declspec(dllexport) #endif #ifdef __cplusplus extern "C" { #endif //判断是否为高速USB设备 DEVAPI BOOL FAR PASCAL USB9825_IsHighDevice(HANDLE hDevice,PUCHAR pDat); //根据设备号打开设备 DEVAPI HANDLE FAR PASCAL USB9825_Link(UCHAR DeviceNO); //断开设备 DEVAPI BOOL FAR PASCAL USB9825_UnLink(HANDLE hDevice); //初始化参数并开始采集 DEVAPI BOOL FAR PASCAL USB9825_InitAD(HANDLE hDevice, PUSB9825_PARA_INIT para_init); //读取AD数据 DEVAPI BOOL FAR PASCAL USB9825_ReadAD(HANDLE hDevice,PUSHORT pBuf, ULONG nCount); //结束采集 DEVAPI BOOL FAR PASCAL USB9825_StopAD(HANDLE hDevice, UCHAR devNum); //设置DO DEVAPI BOOL FAR PASCAL USB9825_SetDO(HANDLE hDevice, LONG byDO); //读取DI DEVAPI BOOL FAR PASCAL USB9825_GetDI(HANDLE hDevice, PLONG pDI); //设置AD零偏 DEVAPI BOOL FAR PASCAL USB9825_ADoffset(HANDLE hDevice, LONG lselAD, BOOL bWtRd,PLONG plADoffset); //读取硬件FIFO溢出位 DEVAPI BOOL FAR PASCAL USB9825_GetBufOver(HANDLE hDevice, PLONG pBufOver); //软件触发 DEVAPI BOOL FAR PASCAL USB9825_ExeSoftTrig(HANDLE hDevice); //读取设备信息 DEVAPI BOOL FAR PASCAL USB9825_GetDevInfo(HANDLE hdl,LONG* devFifoSize,LONG* devADbit); //读写用户存储器 DEVAPI BOOL FAR PASCAL USB9825_WrRdUsrMem(HANDLE hDevice, BOOL bWtRd, PLONG pMem); //设置PWM脉冲发生器 DEVAPI BOOL FAR PASCAL USB9825_SetPulGen(HANDLE hDevice, ULONG lAllcnt, ULONG lHighCnt, BOOL bEnable); #ifdef __cplusplus } #endif |
|
相关推荐
11个回答
|
|
函数错误。
|
|
|
|
难道是FCFR-USB9825采集卡?
|
|
|
|
有没有头文件?然后,是不是先读数据再Stop AD?
|
|
|
|
|
|
|
|
|
|
|
|
//头文件 //AD初始化参数 #ifndef _USB9825_PARA_INIT typedef struct _USB9825_PARA_INIT { LONG lSelADClk; //时钟选择 LONG lChCnt; //通道选择 LONG ClkDeci; //分频因子 LONG TriggerMode; //触发模式 LONG TriggerSource; //触发源 LONG TriggerDelay; //触发延时 LONG TriggerLength; //触发长度 LONG TriggerLevel; //模拟触发电平 LONG lADFmt; //AD输出数据格式 } USB9825_PARA_INIT,*PUSB9825_PARA_INIT; #endif //时钟选择 typedef enum EmADClkSel { ADCLK_INT = 0, //板上时钟 ADCLK_EXT = 1 //板外时钟 } ADCLK_SEL; //触发模式 typedef enum EmTriggerMode { TRIG_MODE_CONTINUE = 0, //连续采集 TRIG_MODE_POST = 1, //后触发 TRIG_MODE_DELAY = 2, //延时触发 TRIG_MODE_PRE = 3, //前触发,USB9825不支持 TRIG_MODE_MIDDLE = 4 //中触发,USB9825不支持 } TRIGGER_MODE; //触发源 typedef enum EmTriggerSource { TRIG_SRC_EXT_RISING = 0, //外正沿触发 TRIG_SRC_EXT_FALLING = 1, //外负沿触发 TRIG_SRC_SOFT_RISING = 2, //软件正沿触发 TRIG_SRC_SOFT_FALLING = 3, //软件负沿触发 TRIG_SRC_CH1_RISING = 4, //CH1正沿触发 TRIG_SRC_CH1_FALLING = 5, //CH1负沿触发 TRIG_SRC_CH2_RISING = 6, //CH2正沿触发 TRIG_SRC_CH2_FALLING = 7, //CH2负沿触发 TRIG_SRC_CH3_RISING = 8, //CH3正沿触发 TRIG_SRC_CH3_FALLING = 9, //CH3负沿触发 TRIG_SRC_CH4_RISING = 10, //CH4正沿触发 TRIG_SRC_CH_FALLING = 11, //CH4负沿触发 TRIG_SRC_INT_RISING = 12, //PWM正沿触发 TRIG_SRC_INT_FALLING = 13 //PWM负沿触发 } TRIGGER_SOURCE; //AD数据输出格式 typedef enum EmADFormat { ADFMT_STBIN = 0, //直接二进制输出 ADFMT_2SBIN = 1 //二进制补码输出 } AD_FORMAT; //读/写零偏 #define WRITEOFFSET 0 //写零偏 #define READOFFSET 1 //读零偏 //触发长度单位 #define TRIG_UNIT 32 #define READ_MAX_LEN 1572864L //最大读取长度 /***********************************************************/ #ifndef DEFINING #define DEVAPI __declspec(dllimport) #else #define DEVAPI __declspec(dllexport) #endif #ifdef __cplusplus extern "C" { #endif //判断是否为高速USB设备 DEVAPI BOOL FAR PASCAL USB9825_IsHighDevice(HANDLE hDevice,PUCHAR pDat); //根据设备号打开设备 DEVAPI HANDLE FAR PASCAL USB9825_Link(UCHAR DeviceNO); //断开设备 DEVAPI BOOL FAR PASCAL USB9825_UnLink(HANDLE hDevice); //初始化参数并开始采集 DEVAPI BOOL FAR PASCAL USB9825_InitAD(HANDLE hDevice, PUSB9825_PARA_INIT para_init); //读取AD数据 DEVAPI BOOL FAR PASCAL USB9825_ReadAD(HANDLE hDevice,PUSHORT pBuf, ULONG nCount); //结束采集 DEVAPI BOOL FAR PASCAL USB9825_StopAD(HANDLE hDevice, UCHAR devNum); //设置DO DEVAPI BOOL FAR PASCAL USB9825_SetDO(HANDLE hDevice, LONG byDO); //读取DI DEVAPI BOOL FAR PASCAL USB9825_GetDI(HANDLE hDevice, PLONG pDI); //设置AD零偏 DEVAPI BOOL FAR PASCAL USB9825_ADoffset(HANDLE hDevice, LONG lselAD, BOOL bWtRd,PLONG plADoffset); //读取硬件FIFO溢出位 DEVAPI BOOL FAR PASCAL USB9825_GetBufOver(HANDLE hDevice, PLONG pBufOver); //软件触发 DEVAPI BOOL FAR PASCAL USB9825_ExeSoftTrig(HANDLE hDevice); //读取设备信息 DEVAPI BOOL FAR PASCAL USB9825_GetDevInfo(HANDLE hdl,LONG* devFifoSize,LONG* devADbit); //读写用户存储器 DEVAPI BOOL FAR PASCAL USB9825_WrRdUsrMem(HANDLE hDevice, BOOL bWtRd, PLONG pMem); //设置PWM脉冲发生器 DEVAPI BOOL FAR PASCAL USB9825_SetPulGen(HANDLE hDevice, ULONG lAllcnt, ULONG lHighCnt, BOOL bEnable); #ifdef __cplusplus } #endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
最后怎么解决的,我最近也发生了这个设备
|
|
|
|
时间有点久了,当时就是和对方确认了sdk版本,然后把readAD写成了单独的子vi,并用简单的采集结构测试没有问题,后面就一直用下去了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
589 浏览 0 评论
801 浏览 0 评论
1739 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2628 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1920 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 04:47 , Processed in 0.672852 second(s), Total 65, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号