05-25-2010 12:32 AM
我需要在LabWindows/CVI里和USB通信,驱动是NISV产生的,想收到USB设备中断管道发送来的数据,但总是产生问题,我不知道怎么回事?希望有人能帮组我,程序如下:
int CVICALLBACK Cofig(int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
ViUInt16 RcCount;
ViUInt8 RcCounteel;
ViStatus STATUS;
ViSession USB_INICIO;
ViString identificador_usb = "USB0::0x10C4::0x0000::NI-VISA-0::RAW";
ViFindList findList;
ViUInt32 numInstrs;
char instrDescriptor[256];
ViSession USB_FIND;
ViEventType tipoEvento;
ViEvent evento;
unsigned char bufferLido[50];
ViUInt16 tamanhoBufferLeitura=5;
ViUInt32 contLei;
switch (event)
{
case EVENT_COMMIT:
STATUS = viOpenDefaultRM (&USB_INICIO);
if(STATUS != VI_SUCCESS)
{
MessagePopup("ATEN??O","N?o foi possivel abrir a viOpenDefaultRM");
break;
}
STATUS = viFindRsrc (USB_INICIO, identificador_usb, &findList, &numInstrs, instrDescriptor);
if(STATUS != VI_SUCCESS)
{
MessagePopup("ATEN??O","N?o foi possivel abrir a viFindRsrc");
QuitUserInterface (0); // for?a o fechamento do programa
}
STATUS = viOpen (USB_INICIO, &instrDescriptor[0], VI_NULL, VI_NULL, &USB_FIND);
viSetAttribute(USB_FIND,VI_ATTR_MAX_QUEUE_LENGTH,100);
viSetAttribute(USB_FIND,VI_ATTR_USB_MAX_INTR_SIZE,64);
STATUS = viEnableEvent (USB_FIND, VI_EVENT_USB_INTR, VI_QUEUE, VI_NULL);
STATUS = viWaitOnEvent (USB_FIND, VI_EVENT_USB_INTR, 50, &tipoEvento, &evento);
STATUS = viGetAttribute (evento, VI_ATTR_USB_RECV_INTR_DATA, &RcCounteel);
SetCtrlVal(panelHandle,PANEL_Outdata,RcCounteel);
STATUS = viGetAttribute (evento, VI_ATTR_USB_RECV_INTR_SIZE, &RcCount);
SetCtrlVal(panelHandle,PANEL_NUMERIC,RcCount);
STATUS = viRead (USB_FIND, bufferLido, tamanhoBufferLeitura,&contLei);
STATUS = viClose (USB_FIND);
STATUS = viClose (USB_INICIO);
break;
}
return 0;
}
产生错误
05-25-2010 01:58 AM