USB接口的高速数据采集卡的设计与实现
case VECINT_OUTPUT_ENDPOINT0:
bVECFINT=0x00;
Ep0QutputInterruptHandler();
break;
case VECINT_INPUT_ENDPOINT0:
bBECINT=0x00;
Ep0InputInterruptHandler();
break;
case VECINT_OUTPUT_ENDPOINT1:
bVECINT=0x00;
Ep 1 OutputInterruptHandler();
Break;
case VECINT_INPUT_ENDPOINT1:
bVECINT=0x00;
Ep1Inpu
tInterruptHandler();
break;
case VECINT_SETUP_PACKET_RECEIVED:
SetupPacketInterruptHandler();
bUSBSTA=USBSTA_SETUP;
bVECINT=0x00;
break;
default:break; //不知道中断ID
EA=ENABLE; //开中断
}
3.2 主机软件设计
笔者首先开发TUSB3210在主机中的驱动程序。用WinDK3.0开发了Win2000下的驱动程序,实现了控制传输、中断传输和批传输的标准接口函数。
在应用程序开发中,可用VC++编制应用程序。可以把USB设备当成文件来操作,利用CreateFile得到USB句柄,用DeviceIoControl来进行控制传输,用ReadFile、WriteFile进行批量传输。程序实例如下:
HANDLE m_hUsbSample; //USB句柄
m_hUsbSample=CreateFile(\\.\USBSampl0,GENERIC_READ|
GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULI,OPEN_EXISTING,0,NULL); //打开USB句柄
DeviceIoControl(m_hUsbSample,IOCTL_USBSAMPL_REBOOT, NULL,0,NULL,0,&length,NULL); //控制传输
WriteFile(m_hUsbSample,pBuffer,writelength,&writelength,NULL); //批量输出传输
ReadFile(m_hUsbSample,pBuffer,64,&lgngth,NULL); //批量输入传输
CloseHandle(m_hUsbSample); //关闭USB句柄
《USB接口的高速数据采集卡的设计与实现(第3页)》