VID值为0x80001和0x00080001有什么区别
时间: 2023-11-19 15:06:52 浏览: 44
VID 是指设备的厂商识别码 (Vendor ID),用于唯一标识一个厂商或供应商。它通常由国际电子协会 (IEC) 分配给设备制造商。
在这种情况下,0x80001 和 0x00080001 都代表一个 VID,但它们的表示方式稍有不同。
- 0x80001: 这是一个十六进制数,前面的 0x 表示后面的值是十六进制形式。这个 VID 的实际十进制值是 524289。
- 0x00080001: 这也是一个十六进制数,但这里的前导零表示该值有固定的长度。实际上,这个 VID 的十进制值是 524289。
所以,两个 VID 的区别在于表示方式不同,但它们所代表的厂商识别码是相同的。
相关问题
配置环境变量和脚本。 export VID="0x1D6B" export PID="0x0004" export MANUFACTURER="Vendor" export PRODUCT="Camera" export SERIALNUMBER="123456789012" export CamControl1=0x0A export CamControl2=0x00 export CamControl3=0x00 export ProcControl1=0x4F export ProcControl2=0x14 export NV21="360p 720p 1080p 2160p" export MJPEG="360p 720p 1080p 2160p" export H264="360p 720p 1080p 2160p" ȇȍÑnfigkvȇä¯ cd /root/ko ./load3519dv500 -a -sensor0 os08a20 -vo_intf mipitx -board dmeb cd /root/ ./sample_uvc &什么意思
这段代码是在配置环境变量和脚本,具体内容如下:
- VID:USB设备的厂商ID
- PID:USB设备的产品ID
- MANUFACTURER:USB设备的制造商
- PRODUCT:USB设备的产品名称
- SERIALNUMBER:USB设备的序列号
- CamControl1、CamControl2、CamControl3、ProcControl1、ProcControl2:USB设备的控制参数
- NV21、MJPEG、H264:USB设备支持的视频格式
- cd /root/ko ./load3519dv500 -a -sensor0 os08a20 -vo_intf mipitx -board dmeb:进入/root/ko目录,并运行load3519dv500命令,加载驱动程序
- cd /root/ ./sample_uvc &:进入/root/目录,并运行sample_uvc命令,启动USB摄像头。"&"符号表示在后台运行该命令。
已知PID和VID,如何使用WINUSB读取GUID
要使用WINUSB读取GUID,您需要执行以下步骤:
1. 打开设备
使用WinUsb_Initialize函数打开设备并获得设备句柄。您需要提供设备的PID和VID。
2. 获取GUID描述符
使用WinUsb_QueryDeviceInformation函数获取设备的GUID描述符。您需要指定GUID描述符的索引号。
3. 读取GUID
使用WinUsb_ReadPipe函数从设备中读取GUID。您需要指定读取的管道和缓冲区的大小。
以下是一个简单的代码示例,可帮助您开始使用WINUSB读取GUID:
```C++
#include <windows.h>
#include <winusb.h>
#include <setupapi.h>
#include <devguid.h>
#define GUID_INDEX 1
#define BUFFER_SIZE 16
int main()
{
// 打开设备
GUID guid;
HDEVINFO hdevinfo = NULL;
SP_DEVICE_INTERFACE_DATA interface_data;
SP_DEVINFO_DATA devinfo_data;
WINUSB_INTERFACE_HANDLE winusb_handle;
BOOL result;
// 获取设备信息
hdevinfo = SetupDiGetClassDevs(&GUID_DEVCLASS_USB, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if (hdevinfo == INVALID_HANDLE_VALUE) {
printf("Failed to get device info\n");
return 1;
}
// 枚举设备
interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
result = SetupDiEnumDeviceInterfaces(hdevinfo, NULL, &GUID_DEVCLASS_USB, 0, &interface_data);
if (!result) {
printf("Failed to enum device interfaces\n");
return 1;
}
// 获取设备路径
DWORD required_size;
result = SetupDiGetDeviceInterfaceDetail(hdevinfo, &interface_data, NULL, 0, &required_size, NULL);
if (!result && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
printf("Failed to get device interface detail\n");
return 1;
}
PSP_DEVICE_INTERFACE_DETAIL_DATA interface_detail_data;
interface_detail_data = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(required_size);
interface_detail_data->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
result = SetupDiGetDeviceInterfaceDetail(hdevinfo, &interface_data, interface_detail_data, required_size, NULL, NULL);
if (!result) {
printf("Failed to get device interface detail\n");
return 1;
}
// 打开 WinUSB 设备
HANDLE device_handle = CreateFile(interface_detail_data->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (device_handle == INVALID_HANDLE_VALUE) {
printf("Failed to open device\n");
return 1;
}
// 初始化 WinUSB
result = WinUsb_Initialize(device_handle, &winusb_handle);
if (!result) {
printf("Failed to initialize WinUSB\n");
CloseHandle(device_handle);
return 1;
}
// 获取 GUID 描述符
UCHAR guid_descriptor[BUFFER_SIZE];
ULONG guid_descriptor_length = BUFFER_SIZE;
result = WinUsb_QueryDeviceInformation(winusb_handle, DeviceUxdGuid, &guid_descriptor_length, guid_descriptor);
if (!result) {
printf("Failed to query GUID descriptor\n");
WinUsb_Free(winusb_handle);
CloseHandle(device_handle);
return 1;
}
// 读取 GUID
UCHAR guid_data[BUFFER_SIZE];
ULONG guid_length = BUFFER_SIZE;
result = WinUsb_ReadPipe(winusb_handle, 0x81, guid_data, guid_length, NULL, NULL);
if (!result) {
printf("Failed to read GUID\n");
WinUsb_Free(winusb_handle);
CloseHandle(device_handle);
return 1;
}
// 关闭设备
WinUsb_Free(winusb_handle);
CloseHandle(device_handle);
return 0;
}
```