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

📄 usbextend.h

📁 能够读写USB设备,读的时候调用函数DeviceWrite(),写USB设备时候调用DeviceRead()
💻 H
字号:
#pragma once
#include "afxwin.h"
#include "afxmt.h"
#include "stdAfx.h" //系统相关
#include "stdafx.h"
#include ".\ABOUTUSB\UsbIF.h"                              //USB相关
#include <winioctl.h>                           //??
#include ".\ABOUTUSB\ioctls.h"                             //??
#include <objbase.h>                            //??
#include <initguid.h>		                    // Required for GUID definition


// GetProductString() function flags
#define		F32x_RETURN_SERIAL_NUMBER	0x00
#define		F32x_RETURN_DESCRIPTION		0x01

// Return codes
#define		F32x_SUCCESS				0x00
#define		F32x_DEVICE_NOT_FOUND		0xFF
#define		F32x_INVALID_HANDLE			0x01
#define		F32x_READ_ERROR				0x02
#define		F32x_RX_QUEUE_NOT_READY		0x03
#define		F32x_WRITE_ERROR			0x04
#define		F32x_RESET_ERROR			0x05
#define		F32x_INVALID_PARAMETER		0x06
#define		F32x_INVALID_REQUEST_LENGTH	0x07
#define		F32x_DEVICE_IO_FAILED		0x08

// RX Queue status flags
#define		F32x_RX_NO_OVERRUN			0x00
#define		F32x_RX_OVERRUN				0x01
#define		F32x_RX_READY				0x02

// Buffer size limits
#define		F32x_MAX_DEVICE_STRLEN		256
#define		F32x_MAX_READ_SIZE			4096
#define		F32x_MAX_WRITE_SIZE			4096

// Type definitions
typedef		int		F32x_STATUS;
typedef		char	F32x_DEVICE_STRING[F32x_MAX_DEVICE_STRLEN];     //F32x_MAX_DEVICE_STRLEN为256
typedef     struct  tagUSBDeviceNames
{
    
	CString         strUSBDevice[4];
	unsigned short  iUSBTotalNumber;
	unsigned short  iCurrentSelectNumber;

}USBDeviceNames;

//---------------------------------------------------------------------------------------------------

#include "afxwin.h"
#include "afxmt.h"
#if !defined(AFX_F32X_BULKFILETRANSFERDLG_H__03E03B93_6F73_420A_8D62_F36E2D7D75A7__INCLUDED_)
#define AFX_F32X_BULKFILETRANSFERDLG_H__03E03B93_6F73_420A_8D62_F36E2D7D75A7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#define MAX_PACKET_SIZE_READ		64
#define MAX_PACKET_SIZE_READ		(64 *1024 )
//#define MAX_PACKET_SIZE_WRITE		64
#define MAX_PACKET_SIZE_WRITE		512

//#define MAX_WRITE_PKTS		0x08
#define MAX_WRITE_PKTS		0x01

#define FT_READ_MSG			0x00
#define FT_WRITE_MSG		0x01
#define FT_READ_ACK			0x02

#define FT_MSG_SIZE			0x03

//定义USB对下位机发送BUF[1]内容
#define FT_COMMAND_TYPE     0x00				// 格式为“命令”
#define	FT_DATA_TYPE		0x01				// 格式为“数据”
//定义USB对下位机发送BUF[2]内容
#define	FT_LED_COMMAND		0x01				// 命令:开关LED
#define FT_SPI_COMMAND		0x02				// 命令:打开SPI总线读CC2420寄存器

#define WM_THREADENDED      WM_USER + 100



 BOOL ValidParam(LPDWORD lpdwPointer);
 BOOL ValidParam(LPVOID lpVoidPointer);
 BOOL ValidParam(HANDLE* lpHandle);
 BOOL ValidParam(LPVOID lpVoidPointer, LPDWORD lpdwPointer);
 BOOL ValidParam(LPDWORD lpdwPointer1, LPDWORD lpdwPointer2);

//-------------------------------------------------------------------------------------------



class CUSBExtend :public CUsbIF
{
public:
	CUSBExtend(void);
	~CUSBExtend(void);


public:
	 BOOL OnInit();
	 void UpdateDeviceList() ;
     void FillDeviceList();
	 BOOL DeviceRead(BYTE* buffer, DWORD dwSize, DWORD* lpdwBytesRead, DWORD dwTimeout = 0);
	 BOOL DeviceWrite(BYTE* buffer, DWORD dwSize, DWORD* lpdwBytesWritten, DWORD dwTimeout = 0);
	 
	 UINT ThreadProc(LPVOID param);
    
	 F32x_STATUS F32x_GetNumDevices(LPDWORD lpdwNumDevices);
     F32x_STATUS F32x_GetProductString(DWORD dwDeviceNum, LPVOID lpvDeviceString, DWORD dwFlags);
     F32x_STATUS F32x_Open(DWORD dwDevice, HANDLE* cyHandle);
     F32x_STATUS F32x_Close(HANDLE cyHandle);
     F32x_STATUS F32x_Read(HANDLE cyHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpdwBytesReturned);
     F32x_STATUS F32x_Write(HANDLE cyHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpdwBytesWritten);
    


private:
	 HANDLE m_hUSBDevice;
	 HANDLE m_hUSBWrite;
	 HANDLE m_hUSBRead;
	 
	 
	 //static CUsbIF	sgCUsbIF;    //定义该类型对象,并且为静态类型
     DWORD	sgdwNumDevices ;
     DWORD	sgdwWriteTimeout ;
     DWORD	sgdwReadTimeout ;


public:
	//左通道线程运行标志
    BOOL bRun;
	//用于标志正在运行的左通道模块
    UINT             m_LeftChannelsModuleFlag;
	USBDeviceNames   m_USBDeviceNames;
	
};


#endif

⌨️ 快捷键说明

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