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

📄 usb.cpp

📁 和老师合作的半成品
💻 CPP
字号:
//==================================================================================================
/////////////////////////////////////////    WUSB使用函数   ////////////////////////////////////////
//==================================================================================================
//添加标准头文件
#include "StdAfx.h"

//添加 LPC2146 的 USB 头文件
#include "..\USB\EasyUSB214x.h"
#include "..\USB\USB.h"
//==================================================================================================
/////////////////////////////////////    WUSB类定义及初始化   //////////////////////////////////////
//==================================================================================================
WUSB::WUSB( VOID )
{
}

WUSB::~WUSB( VOID )
{
}
//==================================================================================================
//////////////////////////////////////    与LPC2146交换数据    /////////////////////////////////////
//==================================================================================================
DWORD WUSB::USB_ExchangeData( LPBYTE lpTxData, DWORD dwTxDataLen, LPBYTE lpRxData, DWORD dwRxDataLen )
{
	//==========================================================================================
	/////////////////////////////////    设置使用的局部变量    /////////////////////////////////
	//==========================================================================================
	DWORD  dwRes        = 0;
	BYTE   byUSBAck     = 0;
	BYTE   byUSBCmd[8]  = {0};
	BYTE   byUSBCmdSize = 8;

	*( (LPDWORD)(&byUSBCmd[0]) )     =     dwTxDataLen; //即将发送的字节数
	*( (LPDWORD)(&byUSBCmd[4]) )     =     dwRxDataLen; //即将接收的字节数
	//==========================================================================================
	//////////////////////////////    往端点1管道1发送数据长度    //////////////////////////////
	//==========================================================================================
	//用逻辑端点1的管道1, 告诉单片机: PC机将用逻辑端点2发送的字节数 8 接收的字节数 4096
	dwRes = WriteData214x( 1, &byUSBCmd[0], byUSBCmdSize, 1000);

	//验证返回值,长度4字节
	if ( dwRes!=byUSBCmdSize )
	{
		return 0x02;
	}
	//==========================================================================================
	/////////////////////////////    利用端点1管道0接收MCU应答    //////////////////////////////
	//==========================================================================================
	//接收单片机的应答, 应答为一个字节: 0x01, 确保单片机已收到 cmd[] 这两个字节
	dwRes = ReadData214x( 0, &byUSBAck, 1, 1000 );

	//验证返回值
	if ( dwRes!=1 )
	{
		return 0x03;
	}

	//验证单片机应答
	if ( byUSBAck!=1 )
	{
		return 0x04;
	}
	//==========================================================================================
	///////////////////////////////    利用端点2管道3发送数据    ///////////////////////////////
	//==========================================================================================
	//用逻辑端点2, 发送大量数据
	dwRes = WriteData214x( 3, lpTxData, dwTxDataLen, 1000 );

	//验证返回值
	if ( dwRes!=dwTxDataLen )
	{
		return 0x05;
	}
	//==========================================================================================
	/////////////////////////////    利用端点2管道2接收MCU数据    //////////////////////////////
	//==========================================================================================
	//用逻辑端点2, 接收来自 USB 设备的大量数据
	dwRes = ReadData214x( 2, lpRxData, dwRxDataLen, 1000 );

	if ( dwRes!=dwRxDataLen )
	{
		return 0x06;
	}
	//==========================================================================================
	/////////////////////////////////////    USB测试结束    ////////////////////////////////////
	//==========================================================================================
	return 0x01;
}
//==================================================================================================
///////////////////////////////////////    检查 USB 返回值    //////////////////////////////////////
//==================================================================================================
VOID WUSB::USB_CheckReturnValue( DWORD dwReVal )
{
	//==========================================================================================
	/////////////////////////////////////    检查返回值    /////////////////////////////////////
	//==========================================================================================
	switch ( dwReVal )
	{
	case 0x00 :
		MessageBox(NULL,TEXT("USB函数调用错误!"),TEXT("Error!"),MB_OK);
		break;
	case 0x01:
		//函数使用成功
		break;
	case 0x02:
		MessageBox(NULL,TEXT("错误码 0x02 \n逻辑端点 1 发送数据错误!"),TEXT("Error!"),MB_OK);
		break;
	case 0x03:
		MessageBox(NULL,TEXT("错误码 0x03 \n逻辑端点 1 接收数据错误!"),TEXT("Error!"),MB_OK);
		break;
	case 0x04 :
		MessageBox(NULL,TEXT("错误码 0x04 \n逻辑端点 1 应答错误"),TEXT("Error!"),MB_OK);
		break;
	case 0x05 :
		MessageBox(NULL,TEXT("错误码 0x05 \n逻辑端点 2 发送数据错误!"),TEXT("Error!"),MB_OK);
		break;
	case 0x06 :
		MessageBox(NULL,TEXT("错误码 0x06 \n逻辑端点 2 接收数据错误!"),TEXT("Error!"),MB_OK);
		break;
	default :
		MessageBox(NULL,TEXT("USB函数调用错误!"),TEXT("Error!"),MB_OK);
		break;
	}
	//==========================================================================================
	///////////////////////////////////    返回值检查结束    ///////////////////////////////////
	//==========================================================================================
}
//===================================================================================================
//////////////////////////////////////   程序结束   /////////////////////////////////////////////////
//===================================================================================================

⌨️ 快捷键说明

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