用QT调用.DLL文件,调试ZLG USB CAN卡是VCI_OpenDevice 时返回值一直为0,调用段代码
devtype=21;
devind=0;
res=0;
if(pOpenDevice(devtype,devind,res)==STATUS_ERR )
{
qDebug()<<"3";
qDebug()<<"status_err"<<STATUS_ERR;
if(pReadErrInfoCAN(devtype,devind,canind,&vei)!=STATUS_ERR)
{
qDebug()<<"Open failed"<<QString::number(vei.ErrCode,16);
}else
qDebug()<<"error";
return;
}else
qDebug()<<"open successed";
加载库段代码如下:devtype=21;//设备类型USBCAN 2EU
devind=0;//设备索引号
res=0;//系统保留位,一般为0
canind=0;//CAN通道0
reftype=0;//参数类型
bool ok;
VCI_ERR_INFO vei;
VCI_CAN_OBJ preceive[100];
VCI_CAN_OBJ psend;
int baud=0x10000000;
QLibrary lib("usbcan.dll");
if(true==lib.load())
{
pOpenDevice = (VCI_OpenDevice *)lib.resolve("VCI_OpenDevice");//是不能直接使用VCI_InitCAN函数的,必须导出
pCloseDevice = (VCI_CloseDevice *)lib.resolve("VCI_CloseDevice");
pInitCAN = (VCI_InitCAN *)lib.resolve("VCI_InitCAN");
pStartCAN = (VCI_StartCAN *)lib.resolve("VCI_StartCAN");
pTransmitCAN = (VCI_Transmit *)lib.resolve("VCI_Transmit");
pReceive = (VCI_Receive *)lib.resolve("VCI_Receive");
pGetReceiveNum = (VCI_GetReceiveNum *)lib.resolve("VCI_GetReceiveNum");
pClearBuffer = (VCI_ClearBuffer *)lib.resolve("VCI_ClearBuffer");
pReadErrInfoCAN = (VCI_ReadErrInfo*)lib.resolve("VCI_ReadErrInfo");
pResetCAN=(VCI_ResetCAN *)lib.resolve("VCI_ResetCAN");
pSetReference=(VCI_SetReference *)lib.resolve("VCI_SetReference");
pReadBoardInfo=(VCI_ReadBoardInfo *)lib.resolve("VCI_ReadBoardInfo");
pReadCANStatus=(VCI_ReadCANStatus *)lib.resolve("VCI_ReadCANStatus");
qDebug()<<"usbcan.dll load ok";
}
else
qDebug()<<"usbcan.dll load failed";
|