⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slusb.cpp

📁 包括EZ811和SL811的文档
💻 CPP
字号:
#include "stdafx.h"
#pragma hdrstop
#include <windows.h>
#include "slusb.h"

static HANDLE hUsbDev=0, hUsbPipe=0;
/********************************************************************************
 * UsbVendorCmdRead
 * Description :	UsbVendorCmdRead 
 * Parameters  :	hUsbDev
 *         bCmd     Command Opcode
 *         wValue   User 1st Parameter 
 *         wIndex   User 2nd Parameter 
 *         wLen     Length for pData
 *         pData    User's data buffer pointer
 * Return      :	BOOL	TRUE means successful, else FAIL
 ********************************************************************************/
BOOL UsbVendorCmdRead(BYTE bCmd, WORD wValue, WORD wIndex, WORD wLen, PVOID pData)
{  DWORD cbRet;
   DevReq devreq;

   devreq.ioBuff   = (PBYTE)pData;
   devreq.bmRequest=0xc0;	//host read
   devreq.bRequest = bCmd;
   devreq.wValue   = wValue;
   devreq.wIndex   = wIndex;
   devreq.wLength  = wLen;
   return DeviceIoControl(hUsbDev,
	                     (DWORD)IOCTL_VENDOR_CONTROL,
	   					 (PVOID)&devreq,
						 (DWORD)sizeof(DevReq),
						 NULL,     
						 (DWORD)0, 
   						 &cbRet,
						 NULL);
}

 /*********************************************************************************
 * UsbVendorCmdWrite
 * Description :	Write cmd block to Scanner
 * Parameters  :	hUsbDev
 *         bCmd     Command Opcode
 *         wValue   User 1st Parameter 
 *         wIndex   User 2nd Parameter 
 *         wLen     Length for pData
 *         pData    User's data buffer pointer
 * Return      :	BOOL	TRUE means successful, else FAIL
 **********************************************************************************/
BOOL UsbVendorCmdWrite(BYTE bCmd, WORD wValue, WORD wIndex, WORD wLen, PVOID pData)
{  DWORD cbRet;
   DevReq devreq;

   devreq.ioBuff   = (PBYTE)pData;
   devreq.bmRequest= 0x40;	//host write
   devreq.bRequest = bCmd;
   devreq.wValue   = wValue;
   devreq.wIndex   = wIndex;
   devreq.wLength  = wLen;
   return DeviceIoControl(hUsbDev,
	                     (DWORD)IOCTL_VENDOR_CONTROL,
	   					 (PVOID)&devreq,
						 (DWORD)sizeof(DevReq),
						 NULL,     
						 (DWORD)0, 
   						 &cbRet,
						 NULL);
}

/***************************************************************************/
BOOL FAR PASCAL FindUsbDev(WORD UsbProd)
{  int i;
   DWORD cbRet;
   USB_DEVICE_DESCRIPTOR dev_desc;
   char cFileName[30],usbName[30];
 
   if(!hUsbDev)
   {   for(i=0;i<MAX_USB_DEVICES;i++)
       {   wsprintf(cFileName,SYSFILE,i);
           if ((hUsbDev=CreateFile(cFileName,GENERIC_WRITE|GENERIC_READ,0,NULL,
                           OPEN_EXISTING,0,NULL )) !=  INVALID_HANDLE_VALUE) 
           {  if((DeviceIoControl(hUsbDev,(DWORD)IOCTL_GET_VERSION,NULL,0,(PVOID)&dev_desc,
								 sizeof(USB_DEVICE_DESCRIPTOR),&cbRet,NULL)))
              {  if (dev_desc.idProduct == UsbProd)
                   wsprintf(usbName,"%s\\0\\0\\0\\2",cFileName);  // Extra read pipe
                   hUsbPipe = CreateFile(usbName,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
				   return TRUE;
	          }
              CloseHandle(hUsbDev); 
           }
       } // for
	   hUsbDev=0;
       return FALSE;
   }
   return TRUE;
}

/***************************************************************************/
BOOL FAR PASCAL CloseUsbDev(VOID)
{  if(hUsbDev)
   {  CloseHandle(hUsbDev);
      hUsbDev=hUsbPipe = 0;	 	   
      return TRUE;
   }
   return FALSE;
}

/***************************************************************************/
BOOL UsbDataRead(DWORD cData,PVOID pData)
{   DWORD       dwRet;
    if (!ReadFile(hUsbDev, pData, cData, &dwRet, NULL)) return FALSE;
    if (dwRet<cData) return FALSE;
    return TRUE;
}

/***************************************************************************/
BOOL UsbDataReadPipe(DWORD cData,PVOID pData)
{   DWORD       dwRet;
    if (!ReadFile(hUsbPipe, pData, cData, &dwRet, NULL)) return FALSE;
    if (dwRet<cData) return FALSE;
    return TRUE;
}

/***************************************************************************/
BOOL UsbDataWrite(DWORD cData,PVOID pData)
{   DWORD       dwRet;
    if (!WriteFile(hUsbDev, pData, cData, &dwRet, NULL)) return FALSE;
    if (dwRet<cData) return FALSE;
    return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -