您现在所在的是:

嵌入式系统

回帖:3个,阅读:5462 [上一页] [1] [下一页]
918
sanderou
文章数:5
年度积分:50
历史总积分:918
注册时间:2005/6/21
发站内信
发表于:2005/12/1 11:17:00
#0楼
在用VC做研华PCL-818数据采集编程时,采用动态连接库方式(818驱动,device manager都已装),按照说明编了一个采集0号通道的例子,运行时先是提示一个AI conversion failed对话框。按确定后,然后又弹出Invalid driver handle failed.我是按照说明来编的阿!我把adsapi32.lib,driver.h,os.h都按照说明设置好了阿!就是不知道出在什么地方,我用研华自带的AD_SOFT例程运行,也出现了AI conversion failed对话框。超级郁闷中:(:(:(。我这方面还没入门,请懂这方面的大侠指教,万分感谢!!!!
主要代码如下:
void CYk1Dlg::OnButton1()
{
   // TODO: Add your control notification handler code here
   ErrCde=DRV_DeviceOpen(0,(LONG far*)&DriverHandle);
   char  szErrMsg[100];
   if(ErrCde!=SUCCESS)
   {
      strcpy(szErrMsg,"Device open error!");
      MessageBox((LPCSTR)szErrMsg,"Device Open",MB_OK);
      return;
   }
   ptDevFeatures.buffer=(LPDEVFEATURES)&DevFeatures;
   ptDevFeatures.size=sizeof(DEVFEATURES);
   if((ErrCde=DRV_DeviceGetFeatures(DriverHandle,
          (LPT_DeviceGetFeatures)&ptDevFeatures))!=SUCCESS)
   {
      DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
      MessageBox((LPCSTR)szErrMsg,"Driver Message GetFeatures ",MB_OK);
      DRV_DeviceClose((LONG far*)&DriverHandle);  
      return;
      }
   ptAIConfig.DasGain=DevFeatures.glGainList[gwGain].usGainCde;
   ptAIConfig.DasChan=gwChannel;
   if((ErrCde=DRV_AIConfig(DriverHandle,
       (LPT_AIConfig)&ptAIConfig))!=0)
   {
      DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
      MessageBox((LPCSTR)szErrMsg,"Driver Message AIConfig ",MB_OK);
      DRV_DeviceClose((LONG far*)&DriverHandle);  
      return;
   }
   ptAIVoltageIn.chan=gwChannel;
   ptAIVoltageIn.gain=ptAIConfig.DasGain;
   ptAIVoltageIn.TrigMode=0;//internal trigger
   ptAIVoltageIn.voltage=(FLOAT far*)&fVoltage;
//定时器触发数据采集
   SetTimer(1,500,0);    

}

void CYk1Dlg::OnTimer(UINT nIDEvent)
{
   // TODO: Add your message handler code here and/or call default
   CString szBuffer;
   char  szErrMsg[100];
   strcpy(szErrMsg,"Device open error!");
   szBuffer.Format("data=%10.6f",fVoltage);
   if((ErrCde=DRV_AIVoltageIn(DriverHandle,
       (LPT_AIVoltageIn)&ptAIVoltageIn))!=0)///就在这里出的问题,到底是什么原因呢????????
   {
      DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
      MessageBox((LPCSTR)szErrMsg,"Driver Message AIVoltageIn ",MB_OK);
      DRV_DeviceClose((LONG far*)&DriverHandle);  
      return;
   }    
   CWnd* pWnd=GetDlgItem(IDC_EDIT1);
   pWnd->SetWindowText(szBuffer);
   pDataList->InsertString(0,szBuffer);    
   CDialog::OnTimer(nIDEvent);
}
1161
smallthing
文章数:97
年度积分:50
历史总积分:1161
注册时间:2004/12/25
发站内信
发表于:2006/2/6 20:41:00
#1楼
我是北京中泰的PCI卡,DLL编程老出错
1161
smallthing
文章数:97
年度积分:50
历史总积分:1161
注册时间:2004/12/25
发站内信
发表于:2006/2/6 20:43:00
#2楼
type
pZT_PCIBOARD=^ZT_PCIBOARD;
//用于传递参数的结构
ZT_PCIBOARD = Record
   lIndex: LONGINT; //PCI卡索引值,该值在安装时被系统自动分配
   hHandle: double;//PCI卡的操作句柄(只有涉及中断时才用)
   nChBase : byte ;//默认为0,表示通道号从0开始;
                      //设为1,表示通道号从1开始,
                      //不能设为0或1以外的数
   nCh : word; //通道号
   lCode : LONGINT; //设备控制字,具体含义见说明书中的函数说明
   lData : double; //输入输出数据变量,一般用于传递单个数据
   errorLevel : LONGINT; //某些函数的错误返回码,0表无错误,其他错误代码请看头文件
   pldata : ^double; //输入输出数据指针,用于传递成批数据
end;



//打开中泰板卡
Function OpenDevicePlx(nZT_PCIBOARD:pZT_PCIBOARD):double;stdcall; external 'PCI8320.dll' name 'OpenDevicePlx' ;

//关闭中泰板卡
Function CloseDevicePlx(nZT_PCIBOARD:pZT_PCIBOARD):double;stdcall; external 'PCI8320.dll' name 'CloseDevicePlx ' ;

//模拟量输入
  Function ZT8320AI(nZT_PCIBOARD:PZT_PCIBOARD):double ; stdcall; external 'PCI8320.dll' name'ZT8320AI' ;

//模出部分
Function ZT8320DA(nZT_PCIBOARD:pZT_PCIBOARD):double ; stdcall; external 'PCI8320.dll' name'ZT8320DA' ;
1017
guo_iver
文章数:22
年度积分:50
历史总积分:1017
注册时间:2005/6/23
发站内信
发表于:2006/2/14 11:40:00
#3楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004