大侠们救命啊:关于pci-7300A软件编程的问题 点击:1426 | 回复:6



ljypp

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年10月12日
发表于:2004-10-12 23:18:00
楼主
我用的是NuDAQ PCI-7300A,在用VC6.0对它进行编程时,遇到了一个超级郁闷的问题: 用代码生成机生成的文件,编译时竟然头文件都有错误,说“BOOLEAN”和“HANDLE”类型没有定义,我在dask.h里查找发现的确没有定义,但是却使用了;还有“...前缺少;的错误”。 偶是个VC新手,刚开始就遇到错误,愁死了,各位大侠帮帮忙,给我指一条明路吧,谢先!



yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2004-10-15 09:46:00
1楼
你的PCIS-DASK驱动版本是多少?我们这里在测试和使用过程中没发现过这个问题。

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2004-10-15 10:31:00
2楼
BOOLEAN, HANDLE 是 Windows 定的型别, 试试看 includes <windows.h> 先!

ljypp

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年10月12日
发表于:2004-10-15 16:49:00
3楼
解决了,原因是因为它给的代码生成机只是个指导性的程序,一些类型定义不兼容.只能自己编写代码.

唐总华

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 7回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2002年10月21日
发表于:2004-10-19 16:54:00
4楼
ljypp大侠,您是如何解决的啊?我用cvi对pci-9118编程,也遇到类似您的问题,不知您是如何解决的?先谢您了!

ljypp

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年10月12日
发表于:2004-10-19 22:15:00
5楼
就是用它给的库函数(软件安装完后有手册详细介绍)进行编程,不要用他给的代码生成机自动生成代码,如果再不会可以参照装完软件后给的那些例子,这些例子要好好看看,仔细了解一下其中各项参数的具体含义。实在不行可以和他们的客服联系,不过他们的客服好像水平不是很高的说,今天我刚去找了他们一趟,好多问题他们也不明白,而且测试设备太烂了。

唐总华

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 7回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2002年10月21日
发表于:2004-10-20 09:34:00
6楼
ljypp大侠:我是cvi新手,目前用LabWindows/cvi对凌华pci-9118编程。驱动程序装的是最新4.06版,我所用系统是PIII 500,windows xp,已经把驱动库文件PCI-DASK.dll和头文件DASK.h添加到工程文件中,代码参考pcis-dask code creator。 在调试程序时,编译已经通过,执行程序时,按动虚拟面板按钮,程序没有反应,查看变量,halfready总为0,跳不出do-while循环。我用卡自带的示例对卡作检测是正常的。我把源程序贴出来,请大侠百忙之中帮忙解决,感激不尽!祝工作愉快! #include <windows.h> #include "easyio.h" #include <cvirte.h> #include <userint.h> #include "13.h" #include "Dask.h" //constants definition 用凌华pci-9118自己所带的code creator 自动生成的 #define CardNumber 0 #define ADChan 0 #define ScanCount 65536 #define SampleRate 8000.0000 //AI config constants definition #define ModeCtrl P9118_AI_BiPolar|P9118_AI_SingEnded #define FunCtrl P9118_AI_DtrgNegative|P9118_AI_EtrgNegative #define BurstNumber 0 #define PostCount 0 //variables definition I16 cardID = -1; I16 err=0; BOOLEAN HalfReady = 0; BOOLEAN fstop; U32 AccessCnt = 0; U32 MemSize = 0; U16 InBuf[65536]; //AI data buffer static int panelHandle; //CVI的主函数 int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "13.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0; } //CVI面板上的数据采集按钮的回调函数,程序运行时按动该按钮,就驱动数采卡进行采集 int CVICALLBACK Start (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: cardID = Register_Card(PCI_9118DG, CardNumber); if (cardID<0) { //Error occurs !! //ToDo : Handle error here } err = AI_InitialMemoryAllocated(cardID,&MemSize); if (err!=NoError) { //Error occurs !! //ToDo : Handle error here } if (MemSize*1024 < ScanCount*sizeof(U16) ) { //available memory size for analog input in the device driver //is smaller than the data size specified!! //ToDo : do something here } err = AI_AsyncDblBufferMode(cardID, 1); if (err!=NoError) { //Error occurs !! //ToDo : Handle error here } err=AI_9118_Config(cardID, ModeCtrl, FunCtrl, BurstNumber, PostCount); if (err!=NoError) { //Error occurs !! //ToDo : Handle error here } err=AI_ContReadChannel (cardID, ADChan, AD_B_5_V, InBuf, ScanCount, SampleRate, ASYNCH_OP); if (err!=NoError) { //Error occurs !! //ToDo : Handle error here } do { do { AI_AsyncDblBufferHalfReady (cardID, &HalfReady, &fstop); } while (!HalfReady); 调试程序时,问题出在该处,变量halfReady总为0,程序跳不出do-while循环 //half buffer data is ready for read AI_AsyncDblBufferTransfer (cardID, InBuf); } while (!fstop); err = AI_AsyncClear(cardID, &AccessCnt); if (err!=NoError) { //Error occurs !! //ToDo : Handle error here } Release_Card(cardID); PlotY (panelHandle, PANEL_GRAPH, InBuf, 65536, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED); break; } return 0; } //cvi 退出运行回调函数 int CVICALLBACK Quit (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: QuitUserInterface (0); break; } return 0; }

热门招聘
相关主题

官方公众号

智造工程师