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