亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainfrm.cpp

?? 一個USB驅動程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "DEC55XXUSB.h"
#include "seeddecusb.h"
#include "ezusbsys.h" 
#include "UsbvreqDialog.h"
#include "Audiocopygo.h"
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#include "MainFrm.h"

#define VR_LED_OPTION       0xB7
	#define LED_ON          0x0
	#define LED_OFF         0x1
	#define LED_BLINK       0x2
#define VR_USB_VERION       0xB8

#define VR_CODEC_CIRCLE     0xBE
#define VR_CODEC_HALT       0xBF

	#define CODEC_REV_START 0x1
	#define CODEC_REV_STOP  0x2
#define VR_CODEC_PLAY       0xC1
#define VR_CODEC_DATA       0xC2

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

char PIPE_TYPE_STRINGS[4][4] = 
{
"CTL",
"ISO",
"BLK",
"INT"
};

char PIPE_DIRECTION[2][4] = 
{
"OUT",
"IN "
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_TEST_GETDEVICE, OnTestGetdevice)
	ON_COMMAND(ID_TEST_GETSTRING, OnTestGetstring)
	ON_COMMAND(ID_TEST_GETCONFIG, OnTestGetconfig)
	ON_COMMAND(ID_TEST_VENDOR, OnTestVendor)
	ON_COMMAND(ID_TEST_GETPIPEINFO, OnTestGetpipeinfo)
	ON_COMMAND(ID_BULK_READ, OnBulkRead)
	ON_COMMAND(ID_BULK_WRITE, OnBulkWrite)
	ON_COMMAND(ID_LED_ON, OnLedOn)
	ON_COMMAND(ID_LED_OFF, OnLedOff)
	ON_COMMAND(ID_LED_BLINK, OnLedBlink)
	ON_COMMAND(ID_USB_20OR11, OnUsb20or11)
	ON_COMMAND(ID_CODEC_CIRCLE, OnCodecCircle)
	ON_COMMAND(ID_CODEC_HALT, OnCodecHalt)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnTestGetdevice() 
{
	// TODO: Add your command handler code here
	PVOID psx2_device= 0;
	psx2_device = Sx2GetDeviceDesc();
	if(psx2_device== NULL)
	{
		AfxMessageBox("操作失敗,請復位SEED-DEC55XX系統");
	}
	/*顯示獲取的描述表*/
	theApp.Out("*********************************************************************\n");
	theApp.Out("the current cy7c68001's device descriptor is:\n");
	theApp.Out("-----------------------------------------------------------\n");
	theApp.Out("	Vendor ID is: 0x%x \n ",((pUsb_Device_Descriptor)psx2_device )->idVendor);
	theApp.Out("	Product ID is: 0x%x \n",((pUsb_Device_Descriptor)psx2_device )->idProduct);
	theApp.Out("	Device ID is: 0x%x \n",((pUsb_Device_Descriptor)psx2_device )->bcdDevice);
	theApp.Out("	Maximum Packet Size is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->bMaxPacketSize0);
	theApp.Out("	Device class is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->bDeviceClass);
	theApp.Out("	Device sub-class is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->bDeviceSubClass);
	theApp.Out("	Manufacturer string index is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->iManufacturer);
	theApp.Out("	Product string index is: 0x%x \n",((pUsb_Device_Descriptor)psx2_device )->idProduct);
	theApp.Out("	Serial number string index is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->iSerialNumber);
	theApp.Out("	Number of configurations is: 0x%x\n",((pUsb_Device_Descriptor)psx2_device )->bNumConfigurations);
	theApp.Out("\n\n");
}

void CMainFrame::OnTestGetstring() 
{
	// TODO: Add your command handler code here
	char viewstr[100];
	int i = 0;
	PVOID psx2_string= 0;
	int stringindex = 0;
	psx2_string = Sx2GetStringDesc(stringindex++);
	if(psx2_string == NULL)
	{
		AfxMessageBox("操作失敗,請復位SEED-DEC55XX系統");
	}
	for(i =0;i<(((pUsb_String_Descriptor)psx2_string)->bLength)/2-1;i++)
	{
		viewstr[i] = ((pUsb_String_Descriptor)psx2_string)->bString[i*2];
	}
	viewstr[i] = '\0';
	/*顯示獲取的描述表*/
	theApp.Out("*********************************************************************\n");
	theApp.Out("the current cy7c68001's string Decriptor is:\n");
	theApp.Out("-----------------------------------\n");
	theApp.Out("%s ",viewstr);
	psx2_string = Sx2GetStringDesc(stringindex++);
	if(psx2_string == NULL)
	{
		AfxMessageBox("操作失敗,請復位SEED-DEC55XX系統");
	}
	for(i =0;i<(((pUsb_String_Descriptor)psx2_string)->bLength)/2-1;i++)
	{
		viewstr[i] = ((pUsb_String_Descriptor)psx2_string)->bString[i*2];
	}
	viewstr[i] = '\0';
	theApp.Out("%s\n\n ",viewstr);
}

void CMainFrame::OnTestGetconfig() 
{
	//顯示USB的配置信息
	int i = 0;
	PVOID psx2_config = 0;
	psx2_config = Sx2GetconfigDesc();
	pUsb_Configuration_Descriptor pCD = (pUsb_Configuration_Descriptor) psx2_config;
    PUSB_INTERFACE_DESCRIPTOR     pID = NULL; 
    PUSB_ENDPOINT_DESCRIPTOR      pED = NULL;
	if(psx2_config == NULL)
	{
		AfxMessageBox("操作失敗,請復位SEED-DEC55XX系統");
	}
	/*顯示獲取的描述表*/
	theApp.Out("*********************************************************************\n");
	theApp.Out("The current cy7c68001's configuration Decriptor is:\n");
	theApp.Out("	bLength: 0x%x\n", pCD->bLength);
	theApp.Out("	bDescriptorType:  %d\n", pCD->bDescriptorType);
	theApp.Out("	wTotalLength:  %d (0x%x)\n", pCD->wTotalLength, pCD->wTotalLength);
	theApp.Out("	bNumInterfaces:  %d\n", pCD->bNumInterfaces);
	theApp.Out("	bConfigurationValue:  %d\n", pCD->bConfigurationValue);
	theApp.Out("	iConfiguration:  %d\n", pCD->iConfiguration);
	theApp.Out("	bmAttributes: 0x%x\n", pCD->bmAttributes);
	theApp.Out("	MaxPower:  %d\n", pCD->MaxPower);
	theApp.Out("***********************************\n");
	/*顯示接口的描述表*/
	for( pID = (PUSB_INTERFACE_DESCRIPTOR) (((char*)pCD) + pCD->bLength); 
       pID < (PUSB_INTERFACE_DESCRIPTOR) (((char*)pCD) + pCD->wTotalLength);
	   pID->bLength)
	{
		theApp.Out("Interface Descriptor:  \n");
		theApp.Out("-----------------------------------\n");
		theApp.Out("	bLength:  0x%x\n", pID->bLength);
		theApp.Out("	bDescriptorType:  %d\n", pID->bDescriptorType);
		theApp.Out("	bInterfaceNumber:  %d\n", pID->bInterfaceNumber);
		theApp.Out("	bAlternateSetting:  %d\n", pID->bAlternateSetting);
		theApp.Out("	bNumEndpoints:  %d\n", pID->bNumEndpoints);
		theApp.Out("	bInterfaceClass:  %d (0x%x)\n", pID->bInterfaceClass, pID->bInterfaceClass);
		theApp.Out("	bInterfaceSubClass:  %d (0x%x)\n", pID->bInterfaceSubClass, pID->bInterfaceSubClass);
		theApp.Out("	bInterfaceProtocol:  %d (0x%x)\n", pID->bInterfaceProtocol, pID->bInterfaceProtocol);
		theApp.Out("	iInterface:  %d\n", pID->iInterface);
		theApp.Out("************************************\n");
		// 顯示節點的描述表
		pED = (PUSB_ENDPOINT_DESCRIPTOR) (((char*)pID) + pID->bLength);
		for (i=0;i<pID->bNumEndpoints;i++)
		{
			theApp.Out("Endpoint Descriptor %d  \n", i);
			theApp.Out("-----------------------------------\n");
			theApp.Out("	bLength:  0x%x\n", pED->bLength);
			theApp.Out("	bDescriptorType:  %d\n", pED->bDescriptorType);
			theApp.Out("	bEndpointAddress:  0x%x\n", pED->bEndpointAddress);
			theApp.Out("	bmAttributes:  0x%x\n", pED->bmAttributes);
			theApp.Out("	wMaxPacketSize:  %d\n", pED->wMaxPacketSize);
			theApp.Out("	bInterval:  %d\n", pED->bInterval);
			theApp.Out("*************************************\n");
			pED = (PUSB_ENDPOINT_DESCRIPTOR) (((char*)pED) + (pED->bLength));
		}
		// pointer should grow
		pID = (PUSB_INTERFACE_DESCRIPTOR) (char*)pED; 
	}

}

void CMainFrame::OnTestVendor() 
{
	// 測試命令輸入
	int i = 0;
	int recnBytes;
	char buffer[64];
	VENDOR_OR_CLASS_REQUEST_CONTROL	myRequest;
	CUsbvreqDialog vendordlg;
	if(vendordlg.DoModal()== IDCANCEL)
	{
		return;
	}
	theApp.Out("USB vendor requset!");
	myRequest.direction = vendordlg.m_VendorDir;
	myRequest.index = vendordlg.m_VendorIndex;
	myRequest.value = vendordlg.m_VendorValue;
	myRequest.request = vendordlg.m_VendorReq;
	// vendor specific request type (2)
	myRequest.requestType=2; //configuration
    // recepient is device (0)
	myRequest.recepient=0;	//device
	for(i = 0 ;i <vendordlg.m_VendorLength; i++)
	{
		buffer[i] = vendordlg.m_Endpoint0data[i];
	}
	Sx2SendVendorReq(&myRequest,
					 &buffer[0],
					 vendordlg.m_VendorLength,
					 &recnBytes);
	if(recnBytes !=0)
	{
		for(i = 0;i<recnBytes;i++)
		{
			theApp.Out("The data we recieved from the Endpoint0 is 0x%4x\n",buffer[i]);
		}
	}
}

void CMainFrame::OnTestGetpipeinfo() 
{
	// 顯示節點的信息
	int i = 0;
	USBD_INTERFACE_INFORMATION Sx2InterfaceInfo;
	PUSBD_INTERFACE_INFORMATION	pSx2InterfaceInfo = &Sx2InterfaceInfo;
	PUSBD_PIPE_INFORMATION pPipe;
	/*獲得USB的接口信息*/
	if(TRUE !=Sx2GetPipeInfo((PVOID)&Sx2InterfaceInfo))
	{
		return;
	}
	pPipe = pSx2InterfaceInfo->Pipes;
	theApp.Out("*********************************************************************\n");
	theApp.Out("The pipe information is :\n");
	theApp.Out("------------------------------------------------\n");
	theApp.Out("Interface Size %d\n",pSx2InterfaceInfo->Length);
	for(i= 0; i < (int) pSx2InterfaceInfo->NumberOfPipes;i++)
	{
		theApp.Out( "	Pipe: %2d   Type: %s Endpoint: %2d %s  MaxPktSize: 0x%x\n",
					i,
					PIPE_TYPE_STRINGS[pPipe[i].PipeType],
					(pPipe[i].EndpointAddress & 0x0F),PIPE_DIRECTION[(pPipe[i].EndpointAddress >> 7)],
					pPipe[i].MaximumPacketSize);
	}
	theApp.Out("\n");
}

void CMainFrame::OnBulkRead() 
{
	// BULK數據的讀操作
	int i = 0;
	char *buffer;
	char recievedat[1024] = {0};
    ULONG length;
    BULK_TRANSFER_CONTROL bulkControl;
	int recnBytes = 0;
	/*命令請求定義*/
	char buffer1[64];
	VENDOR_OR_CLASS_REQUEST_CONTROL	myRequest;
	ULONG venderlong;
	/*發送命令,使DSP先定入固定的數據*/
	myRequest.direction = 0;
	myRequest.index = 0;
	myRequest.value = 2;
	myRequest.request =0xb6;
	// vendor specific request type (2)
	myRequest.requestType=2; 
    // recepient is device (0)
	myRequest.recepient=0;
	venderlong = 0;
	Sx2SendVendorReq(&myRequest,
					 &buffer1[0],
					 venderlong,
					 &recnBytes);
	/*延時250ms*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区二区三区| 国产视频一区在线观看 | 日韩黄色免费电影| 99在线精品一区二区三区| 久久综合色综合88| 日本伊人色综合网| 欧美一级专区免费大片| 日本午夜精品一区二区三区电影 | 2021久久国产精品不只是精品| 亚洲成人一区在线| 欧美一二三在线| 亚洲高清免费在线| 欧美日韩一级大片网址| 亚洲成人7777| 欧美va亚洲va在线观看蝴蝶网| 午夜欧美大尺度福利影院在线看| 91精品欧美久久久久久动漫| 蜜臀久久久99精品久久久久久| 91精品国产综合久久久久久久| 日韩电影在线观看一区| 3d动漫精品啪啪1区2区免费| 日日噜噜夜夜狠狠视频欧美人| 精品国一区二区三区| 懂色av一区二区三区免费观看| 国产亚洲精品福利| 成人av网站在线观看免费| 最近中文字幕一区二区三区| 欧美曰成人黄网| 国内精品在线播放| 亚洲精品一二三区| 日韩精品一区二区三区在线观看| 国产99久久久国产精品潘金| 亚洲一卡二卡三卡四卡| 欧美精品一区二区三区很污很色的| 国产 欧美在线| 免费观看久久久4p| 亚洲精品国产无天堂网2021| 久久蜜桃av一区二区天堂| 91色porny在线视频| 天使萌一区二区三区免费观看| 国产欧美精品一区aⅴ影院| 欧美电影一区二区| 日韩一区二区不卡| 99在线精品一区二区三区| 男男gaygay亚洲| 亚洲成av人片在线观看无码| 亚洲人亚洲人成电影网站色| 亚洲精品在线免费观看视频| 欧美日本高清视频在线观看| 成人av电影免费观看| 精品一区二区三区免费视频| 免费成人在线影院| 日韩专区欧美专区| 亚洲gay无套男同| 日韩和欧美一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 日本美女一区二区| 日韩国产欧美在线播放| 婷婷综合五月天| 免费日韩伦理电影| 韩国一区二区在线观看| 黄色日韩网站视频| 波多野结衣亚洲一区| 91在线视频网址| 91精品国产综合久久精品app| 欧美日本乱大交xxxxx| 欧美一级午夜免费电影| 9191成人精品久久| 精品久久久久久久人人人人传媒| 欧美精品一区二区精品网| 亚洲国产精品国自产拍av| 一区二区三区成人| 日韩不卡在线观看日韩不卡视频| 激情综合网av| 精品少妇一区二区三区日产乱码| 日韩亚洲欧美一区| 中文字幕一区二区在线播放| 亚洲精品中文字幕在线观看| 日本不卡不码高清免费观看| 成人精品一区二区三区四区 | 制服丝袜激情欧洲亚洲| 久久精品一区二区| 天堂va蜜桃一区二区三区| 国产不卡免费视频| 日韩免费视频一区二区| 亚洲色图.com| 国产精品羞羞答答xxdd| 欧美色精品在线视频| 中文字幕不卡在线观看| 麻豆精品视频在线观看免费| 99久久精品免费看国产免费软件| 欧美xxx久久| 蜜臀av性久久久久蜜臀av麻豆| 日韩av中文字幕一区二区三区| 99久久er热在这里只有精品15 | 精品电影一区二区三区| 视频一区二区三区中文字幕| 色拍拍在线精品视频8848| 国产日韩欧美综合在线| 国产曰批免费观看久久久| 日韩午夜精品视频| 青椒成人免费视频| 欧美一区二区精品| 国产一区二区视频在线| 精品奇米国产一区二区三区| 麻豆精品视频在线观看免费| 精品少妇一区二区| 国产一区视频网站| 国产精品国产三级国产aⅴ中文 | 亚洲一区免费在线观看| 99久久国产综合色|国产精品| 中文字幕一区在线观看视频| 99v久久综合狠狠综合久久| 亚洲精品国产精品乱码不99| 色综合久久久久综合99| 亚洲一区在线视频| 精品少妇一区二区三区在线播放 | 91精品免费在线观看| 久久 天天综合| 亚洲精品免费一二三区| 欧美日韩免费一区二区三区| 日韩不卡一二三区| 国产精品成人午夜| 日韩欧美视频一区| 在线看一区二区| 国产精品综合一区二区三区| 亚洲国产色一区| 国产精品嫩草影院com| 日韩一级高清毛片| 在线免费视频一区二区| 不卡的av中国片| 国产99精品在线观看| 极品瑜伽女神91| 免费黄网站欧美| 日韩二区三区四区| 午夜精品久久久久久久99樱桃| 国产欧美一区二区精品性| 2014亚洲片线观看视频免费| 欧美另类变人与禽xxxxx| 91极品视觉盛宴| 日本高清不卡视频| 99久久久国产精品免费蜜臀| 丁香啪啪综合成人亚洲小说| 极品少妇xxxx偷拍精品少妇| 一本色道久久综合亚洲精品按摩| 久久精品国产网站| 久久99精品视频| 久久99精品久久久久久国产越南| 日本亚洲最大的色成网站www| 性做久久久久久久久| 首页国产欧美日韩丝袜| 亚洲成人7777| 视频一区在线视频| 91福利资源站| 91片黄在线观看| 国产精品小仙女| 国产精品91一区二区| 亚洲18色成人| 视频一区欧美精品| 亚洲欧美一区二区三区孕妇| 欧美视频精品在线| 色噜噜久久综合| 在线一区二区观看| 欧美精品一区男女天堂| 激情丁香综合五月| 国产精品成人免费| 日本电影欧美片| 麻豆91精品视频| 国产精品国产馆在线真实露脸| 色综合久久中文字幕综合网| 中文字幕av不卡| 寂寞少妇一区二区三区| 不卡av免费在线观看| 国产白丝精品91爽爽久久| 一区二区三区在线观看欧美| 国产视频一区在线观看| 欧美激情资源网| 久久久久久综合| 日韩av网站在线观看| 亚洲成人午夜影院| 久久国产尿小便嘘嘘尿| 亚洲成av人片在线观看无码| 丝袜美腿亚洲综合| 韩国午夜理伦三级不卡影院| 在线观看区一区二| 亚洲欧洲www| 国产一区二区视频在线播放| 91丨九色丨国产丨porny| 久久你懂得1024| 蜜臀av性久久久久蜜臀av麻豆| 91蜜桃在线免费视频| 日韩一区二区电影| 麻豆精品视频在线观看免费| 91蜜桃免费观看视频| 亚洲日穴在线视频| 99re这里都是精品| 一区二区在线观看视频在线观看| 成人av网址在线观看| 亚洲欧美日韩人成在线播放| 99久久精品久久久久久清纯|