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

📄 test.cpp

📁 arm_bootloader _flash writter &USB
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#include "libusb/usb.h"

#define MY_VID				(0x9905)
#define MY_PID				(0x6281)

#define BUF_SIZE			(16384)
#define ENDPOINT_IN			(0x81)
#define ENDPOINT_OUT		(0x03)

#define TX_TIMEOUT			(1000)
#define RX_TIMEOUT			(5000)

usb_dev_handle *open_dev(void)
{
	struct usb_bus *bus;
	struct usb_device *dev;
	
	for(bus = usb_get_busses(); bus; bus = bus->next) 
	{
		for(dev = bus->devices; dev; dev = dev->next) 
		{
			if(	dev->descriptor.idVendor == MY_VID &&
				dev->descriptor.idProduct == MY_PID)
			{
				return usb_open(dev);
			}
		}
	}
	return NULL;
}

void bulk_write(usb_dev_handle *dev)
{
	int i;
	char tmp[BUF_SIZE];
	for(i=0; i<128; i++)
		tmp[i] = i;
	for(i=0; i<1; i++)
	{
		unsigned int ret, byte_to_send;

		byte_to_send=64*10;
		ret = usb_bulk_write(dev, ENDPOINT_OUT, tmp, byte_to_send, TX_TIMEOUT);
		
		if(byte_to_send != ret)
		{
			printf("byte_to_send=%d, ret=%d\n", byte_to_send, ret);
			printf("error: bulk write failed\n");
		}
		_sleep(10);
	}
}

void bulk_read(usb_dev_handle *dev)
{
	int i = 0;
	char tmp[BUF_SIZE];

	for(i=0; ; i++)
	{
		int ret, byte_to_read = 32;

		ret = usb_bulk_read(dev, ENDPOINT_IN, tmp, byte_to_read, RX_TIMEOUT);

		if(byte_to_read != ret)
		{
			printf("byte_to_read=%d, ret=%d\n", byte_to_read, ret);
			printf("error: bulk read failed\n");
		}
		else
		{
			printf("#%d: packet receive succesfully !!\n", i);
			/*
			unsigned int i;
			for(i=0; i<byte_to_read; i++)
				printf("%d, ", tmp[i]);
			printf("\n");
			*/
		}
		_sleep(10);
	}
}

int main()
{	
	usb_init();			/* initialize the library */
	usb_find_busses();	/* find all busses */
	usb_find_devices();	/* find all connected devices */

	usb_dev_handle *dev = NULL; /* the device handle */
	dev = open_dev();
	if(dev == NULL)
	{
		printf("Can't find device !!\n");
		system("pause");
		return -1;
	}
	
	// This command will send "SetConfiguration command" with a number
	// indicating which interface to use.
	if(usb_set_configuration(dev, 1) < 0)
	{
		printf("error: setting config 1 failed\n");
		usb_close(dev);
		system("pause");
		return -1;
	}

	// Claim to use interface 0
	if(usb_claim_interface(dev, 0) < 0)
    {
		printf("error: claiming interface 0 failed\n");
		usb_close(dev);
		system("pause");
		return -1;
    }

	// Bulk write !!
	bulk_write(dev);

	// Bulk read !!
	bulk_read(dev);

	printf("Hello World\n");

	usb_close(dev); 
	system("pause");

	

	return 0;
}

⌨️ 快捷键说明

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