📄 usbextend.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 + -