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

📄 usbapp.c

📁 | Target | | 芯片固件程序 | keil C51 uVision2 | Windows98 | Loader | USB2.0接口 | loader.sys设备驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
		MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
		Testing=FALSE;
		return;
	}
    else {
		bResult = DeviceIoControl (hDevice,
                                   IOCTL_Ezusb_GET_STRING_DESCRIPTOR,
                                   &input,
                                   sizeof(GET_STRING_DESCRIPTOR_IN),
                                   &output0,
                                   output.bLength, 
                                   &nBytes,
                                   NULL);
		if (bResult!=TRUE) {
			MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
			Testing=FALSE;
			return;
		}
		else {
            SetDlgItemText (hdlg, IDC_INFORMATION, "测试-字符串描述符(String Descrioptor):");
	        SendMessage (houtputlist, LB_RESETCONTENT, 0, 0);
	        SendMessage (htestlist, LB_RESETCONTENT, 0, 0);

			sprintf(tempbuff[0],"字符串描述符[0]:");
			sprintf(tempbuff[1],"[0]描述符长度(bLength): 0x%xH",output0[0]);
            sprintf(tempbuff[2],"[1]描述符类型(bDescriptorType):0x0%xH",output0[1]);
		    sprintf(tempbuff[3],"[2]字符串(bString):");
		    for (i=0;i<output.bLength-2;i++) {
				sprintf(tempbuff[4],"0%d",output0[i+2]);
				strcat(tempbuff[3],tempbuff[4]);
			}
			for(i=0;i<4;i++) 
				SendMessage (houtputlist, LB_ADDSTRING, 0, (LPARAM)tempbuff[i]);   				
		}        
    }

	input.Index=1;
	input.LanguageId=0;
	bResult = DeviceIoControl (hDevice,
                               IOCTL_Ezusb_GET_STRING_DESCRIPTOR,
                               &input,
                               sizeof(GET_STRING_DESCRIPTOR_IN),
                               &output,
                               4, 
                               &nBytes,
                               NULL);
	if (bResult!=TRUE) {
		MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
		Testing=FALSE;
		return;
	}
    else {
		bResult = DeviceIoControl (hDevice,
                                   IOCTL_Ezusb_GET_STRING_DESCRIPTOR,
                                   &input,
                                   sizeof(GET_STRING_DESCRIPTOR_IN),
                                   &output0,
                                   output.bLength, 
                                   &nBytes,
                                   NULL);
		if (bResult!=TRUE) {
			MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
			Testing=FALSE;
			return;
		}
		else {
			sprintf(tempbuff[0],"字符串描述符[1]:");
			sprintf(tempbuff[1],"[0]描述符长度(bLength): 0x%xH",output0[0]);
            sprintf(tempbuff[2],"[1]描述符类型(bDescriptorType):0x0%xH",output0[1]);
		    sprintf(tempbuff[3],"[2]字符串(bString):");
		    for (i=0;i<output.bLength-2;i++) {
				sprintf(tempbuff[4],"%c",output0[i+2]);
				strcat(tempbuff[3],tempbuff[4]);
			}
			for(i=0;i<4;i++) 
				SendMessage (houtputlist, LB_ADDSTRING, 0, (LPARAM)tempbuff[i]);   				
		}        
    }

	input.Index=2;
	input.LanguageId=0;
	bResult = DeviceIoControl (hDevice,
                               IOCTL_Ezusb_GET_STRING_DESCRIPTOR,
                               &input,
                               sizeof(GET_STRING_DESCRIPTOR_IN),
                               &output,
                               4, 
                               &nBytes,
                               NULL);
	if (bResult!=TRUE) 
		MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
    else {
		bResult = DeviceIoControl (hDevice,
                                   IOCTL_Ezusb_GET_STRING_DESCRIPTOR,
                                   &input,
                                   sizeof(GET_STRING_DESCRIPTOR_IN),
                                   &output0,
                                   output.bLength, 
                                   &nBytes,
                                   NULL);
		if (bResult!=TRUE) 
			MessageBox(hdlg, "读取字符串描述符失败!","错误",MB_ICONERROR);
		else {
			sprintf(tempbuff[0],"字符串描述符[2]:");
			sprintf(tempbuff[1],"[0]描述符长度(bLength): 0x%xH",output0[0]);
            sprintf(tempbuff[2],"[1]描述符类型(bDescriptorType):0x0%xH",output0[1]);
		    sprintf(tempbuff[3],"[2]字符串(bString):");
		    for (i=0;i<output.bLength-2;i++) {
				sprintf(tempbuff[4],"%c",output0[i+2]);
				strcat(tempbuff[3],tempbuff[4]);
			}
			for(i=0;i<4;i++) 
				SendMessage (houtputlist, LB_ADDSTRING, 0, (LPARAM)tempbuff[i]);   				
		}        
    }
	CloseHandle(hDevice);
	Testing=FALSE;
	return;
	}
}

void GetFrameNumber(HWND hdlg)
{
	if (Testing ==TRUE) {
		MessageBox(hdlg, "测试中,请先退出当前测试,再查看帧信息!","警告",MB_ICONINFORMATION);
		return;
	} 
    Testing=TRUE;
	{
	HANDLE hDevice=NULL;
    HWND   htestlist;
	BOOL   bResult = FALSE;
	ULONG  nBytes;
	char   DeviceName[MAX_DEVICE_NAME] = "";
	char   tempbuff[256];
	unsigned long  output;
	
	htestlist = GetDlgItem (hdlg, IDC_TEST_LIST);
	GetDlgItemText (hdlg, IDC_DEVICE_NAME, DeviceName, MAX_DEVICE_NAME);
	if (UsbOpenDriver (&hDevice, DeviceName) != TRUE) {
    	 MessageBox(hdlg, "无效设备,请重试!","错误",MB_ICONERROR);
		 Testing=FALSE;
		 return;
	}

	bResult = DeviceIoControl (hDevice,
                               IOCTL_EZUSB_GET_CURRENT_FRAME_NUMBER,
                               NULL,
                               0,
                               &output,
                               sizeof(unsigned long),
                               &nBytes,
                               NULL);
	if (bResult!=TRUE) 
 		MessageBox(hdlg, "读取传输帧字节数失败!","错误",MB_ICONERROR);
    else {
		SendMessage (htestlist, LB_RESETCONTENT, 0, 0);
	    sprintf(tempbuff,"已传输帧字节数:%d",output);
        SendMessage (htestlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);   				
    }
	CloseHandle(hDevice);
	Testing=FALSE;
	return;
	}
}

void Usb8051Reset(HWND hdlg)
{
	if (Testing ==TRUE) {
		MessageBox(hdlg, "测试中,请先退出当前测试,再复位单片机!","警告",MB_ICONINFORMATION);
		return;
	} 
    Testing=TRUE;
	{
	HANDLE hDevice=NULL;
    HWND   htestlist;
	BOOL   bResult = FALSE;
	ULONG  nBytes;
	char   DeviceName[MAX_DEVICE_NAME] = "";
	char   tempbuff[256];
	VENDOR_REQUEST_IN	myRequest;
	
	htestlist = GetDlgItem (hdlg, IDC_TEST_LIST);
	GetDlgItemText (hdlg, IDC_DEVICE_NAME, DeviceName, MAX_DEVICE_NAME);
	if (UsbOpenDriver (&hDevice, DeviceName) != TRUE) {
    	 MessageBox(hdlg, "无效设备,请重试!","错误",MB_ICONERROR);
		 Testing=FALSE;
		 return;
	}
	myRequest.bRequest = 0xA0;
    myRequest.wValue = 0xE600;
    myRequest.wIndex = 0x00;
    myRequest.wLength = 0x01;
    myRequest.bData = 0;
    myRequest.direction = 0x00;

	bResult = DeviceIoControl (hDevice,
                           IOCTL_Ezusb_VENDOR_REQUEST,
                           &myRequest,
                           sizeof(VENDOR_REQUEST_IN),
                           NULL,
                           0,
                           &nBytes,
                           NULL);
 	if (bResult!=TRUE) 
 		MessageBox(hdlg, "复位8051失败!","错误",MB_ICONERROR);
    else {
		SendMessage (htestlist, LB_RESETCONTENT, 0, 0);
	    sprintf(tempbuff,"8051已经复位!");
		SendMessage (htestlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);   				
    }
	CloseHandle(hDevice);
	Testing=FALSE;
	return;
	}
}

void Usb8051Hold(HWND hdlg)
{  
	if (Testing ==TRUE) {
		MessageBox(hdlg, "测试中,请先退出当前测试,再锁定单片机!","警告",MB_ICONINFORMATION);
		return;
	} 
    Testing=TRUE;
	{
	HANDLE hDevice=NULL;
    HWND   htestlist;
	BOOL   bResult = FALSE;
	ULONG  nBytes;
	char   DeviceName[MAX_DEVICE_NAME] = "";
	char   tempbuff[256];
	VENDOR_REQUEST_IN	myRequest;
	
	htestlist = GetDlgItem (hdlg, IDC_TEST_LIST);
	GetDlgItemText (hdlg, IDC_DEVICE_NAME, DeviceName, MAX_DEVICE_NAME);
	if (UsbOpenDriver (&hDevice, DeviceName) != TRUE) {
    	 MessageBox(hdlg, "无效设备,请重试!","错误",MB_ICONERROR);
		 Testing=FALSE;
		 return;
	}
	myRequest.bRequest = 0xA0;
    myRequest.wValue = 0xE600;
    myRequest.wIndex = 0x00;
    myRequest.wLength = 0x01;
    myRequest.bData = 1; 
    myRequest.direction = 0x00;

	bResult = DeviceIoControl (hDevice,
                           IOCTL_Ezusb_VENDOR_REQUEST,
                           &myRequest,
                           sizeof(VENDOR_REQUEST_IN),
                           NULL,
                           0,
                           &nBytes,
                           NULL);
 	if (bResult!=TRUE) 
 		MessageBox(hdlg, "锁定8051失败!","错误",MB_ICONERROR);
    else {
		SendMessage (htestlist, LB_RESETCONTENT, 0, 0);
	    sprintf(tempbuff,"8051已经锁定!");
		SendMessage (htestlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);   				
    }
	CloseHandle(hDevice);
	Testing=FALSE;
	return;
	}
}

void Download8051File(HWND hdlg)
{
	if (Testing ==TRUE) {
		MessageBox(hdlg, "测试中,请先退出当前测试,再下载8051程序!","警告",MB_ICONINFORMATION);
		return;
	} 
    Testing=TRUE;
	{
	HANDLE hDevice=NULL;
    HWND   htestlist;
	HWND   houtlist;
	BOOL   bResult = FALSE;
	ULONG  nBytes;
	char   DeviceName[MAX_DEVICE_NAME] = "";
	char   tempbuff[256];
	char   temp[256];
	char   DownloadFilename[16];
    FILE   *fp;
    unsigned char buffer[MAX_FILE_SIZE];
    int    numreadfile  = 0;
	int i;
	
	htestlist = GetDlgItem (hdlg, IDC_TEST_LIST);
	houtlist = GetDlgItem (hdlg, IDC_OUTPUT_LIST);
	GetDlgItemText (hdlg, IDC_DEVICE_NAME, DeviceName, MAX_DEVICE_NAME);
	if (UsbOpenDriver (&hDevice, DeviceName) != TRUE) {
    	 MessageBox(hdlg, "无效设备,请重试!","错误",MB_ICONERROR);
		 Testing=FALSE;
		 return;
	}	
	GetDlgItemText (hdlg, IDC_DOWNLOAD_FILENAME, DownloadFilename, 16);
   	if ((fp = fopen(DownloadFilename,"rb")) == NULL)  {
		MessageBox(hdlg, "该文件不存在,请重试!","错误",MB_ICONERROR);
		Testing=FALSE;
		return;
	}
	SetDlgItemText (hdlg, IDC_INFORMATION, "下载8051程序:");
	SendMessage (houtlist, LB_RESETCONTENT, 0, 0);
	SendMessage (htestlist, LB_RESETCONTENT, 0, 0);
	numreadfile = fread(buffer,sizeof(unsigned char),MAX_FILE_SIZE,fp);
    sprintf (tempbuff, "该文件共%d字节",numreadfile);
    SendMessage (houtlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);              
    fclose(fp);
	sprintf (tempbuff, "");
	for (i=0;i<numreadfile;i++) {
		sprintf(temp,"[%d]%x ",i,buffer[i]);
		strcat(tempbuff,temp);
		if(i%5==0 && i!=0) {	
			SendMessage (htestlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);
			sprintf(tempbuff,"");
		}	
	}

	SendMessage (htestlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);
	
    bResult = DeviceIoControl (hDevice,
                               IOCTL_Ezusb_ANCHOR_DOWNLOAD,
                               buffer,
                               numreadfile,
                               NULL,
                               0,
                               &nBytes,
                               NULL);
 	if (bResult!=TRUE) 
 		MessageBox(hdlg, "下载8051程序失败!","错误",MB_ICONERROR);
    else {
		sprintf(tempbuff,"8051程序已经下载!");
		SendMessage (houtlist, LB_ADDSTRING, 0, (LPARAM)tempbuff);
		sprintf(tempbuff,"**测试框中有该文件的全部信息!**");
    }
	CloseHandle(hDevice);
	Testing=FALSE;
	return;
	}
}

⌨️ 快捷键说明

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