怎么查看USB设备的ID

怎么查看USB设备的ID,第1张

电脑上通过设备管理器可以查看usb的设备ID。

1、打开电脑,在电脑主页面上找到计算机图标,右键计算机,选择“管理”功能。

2、进入管理功能的二级页面后,在跳出的功能对话框中选择“设备管理器”。

3、然后选择“通用串行总线控制器”下的“USB大容设备”功能选项,移动鼠标右键,选择“属性”选项。

4、左键点击进入属性功能对话框,在属性设置中选择“硬件ID”栏,在对应的下方“值”中显示的设备名称即为U盘的ID了。

SystemIOPorts中有一个SerialPort 类你可以研究一下

给你个代码看看吧

1 using System;

2 using SystemCollectionsGeneric;

3 using SystemLinq;

4 using SystemText;

5 using SystemWindows;

6 using SystemWindowsControls;

7 using SystemWindowsData;

8 using SystemWindowsDocuments;

9 using SystemWindowsInput;

10 using SystemWindowsMedia;

11 using SystemWindowsMediaImaging;

12 using SystemWindowsNavigation;

13 using SystemWindowsShapes;

14 using SystemIOPorts;

15

16 namespace CsharpComm

17 {

18 /// <summary>

19 /// Window1xaml 的交互逻辑

20 /// </summary>

21 public partial class Window1 : Window

22 {

23 public Window1()

24 {

25 InitializeComponent();

26 }

27

28 //定义 SerialPort对象bai

29 SerialPort port1;

30

31 //初始化SerialPort对象方法PortName为COM口名称,例如"COM1","COM2"等,注意是string类型

32 public void InitCOM(string PortName)

33 {

34 port1 = new SerialPort(PortName);

35 port1BaudRate = 9600;//波特率

36 port1Parity = ParityNone;//无奇偶校验位

37 port1StopBits = StopBitsTwo;//两个停止位

38 port1Handshake = HandshakeRequestToSend;//控制协议

39 port1ReceivedBytesThreshold = 4;//设置 DataReceived 事件发生前内部输入缓冲区中的字节数

40 port1DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);//DataReceived事件委托

41 }

42

43 //DataReceived事件委托方法

44 private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)

45 {

46 try

47 {

48 StringBuilder currentline = new StringBuilder();

49 //循环接收数据

50 while (port1BytesToRead > 0)

51 {

52 char ch = (char)port1ReadByte();

53 currentlineAppend(ch);

54 }

55 //在这里对接收到的数据进行处理

56 //

57 currentline = new StringBuilder();

58 }

59 catch(Exception ex)

60 {

61 ConsoleWriteLine(exMessageToString());

62 }

63

64 }

65

66 //打开串口的方法

67 public void OpenPort()

68 {

69 try

70 {

71 port1Open();

72 }

73 catch { }

74 if (port1IsOpen)

75 {

76 ConsoleWriteLine("the port is opened!");

77 }

78 else

79 {

80 ConsoleWriteLine("failure to open the port!");

81 }

82 }

83

84 //关闭串口的方法

85 public void ClosePort()

86 {

87 port1Close();

88 if (!port1IsOpen)

89 {

90 ConsoleWriteLine("the port is already closed!");

91 }

92 }

93

94 //向串口发送数据

95 public void SendCommand(string CommandString)

96 {

97 byte[] WriteBuffer = EncodingASCIIGetBytes(CommandString);

98 port1Write(WriteBuffer, 0, WriteBufferLength);

99 }

100

101 //调用实例

102 private void btnOpen_Click(object sender, RoutedEventArgs e)

103 {

104 //我现在用的COM1端口,按需要可改成COM2,COM3

105 InitCOM("COM1");

106 OpenPort();

107 }

108 }

109 }

首先要了解到USB设备的通讯协议。然后再通过调用SETUPAPI来枚举设备,通过调用CREATEFILE来得到设备句柄,通过读写文件或DeveceIoControl来与设备通讯。

如果你不了解USB设备的通讯协议,那么你是没有办法得到它的数据的。除非是类似U盘,有文件分配表。

什么设备能读取数据线类型,USB是PC领域上应用的最广泛的一种外部总线标准,用于规范电脑与外部设备的连接和通讯,USB接口支持设备的即插即用和热插拔功能。随着计算机硬件飞速发展,USB的应用增加了外部设备间数据传输的速度,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备。

USB的根据不同接口与数据线,支持设备:鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、MP3机、手机、数码相机、移动硬盘、外置光软驱、USB网卡等电子产品。

USB数据线一共有四个针,其中两个针是连接数据的作用,另外两个针是充电的电源线包括接地的。

ifdatacbSize = sizeof(ifdata); // 枚举符合该GUID的设备接口 bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄 NULL, // 不需额外的设备描述 (LPGUID)&HARDDISK_GUID,//GUID_CLASS_USB_DEVICE, // GUID (ULONG)nCount, // 设备信息集里的设备序号 &ifdata); // 设备接口信息 if (bResult) { ULONG predictedLength = 0; ULONG requiredLength = 0; // 取得该设备接口的细节(设备路径) bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 NULL, // 设备接口细节(设备路径) 0, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 // 取得该设备接口的细节(设备路径) predictedLength=requiredLength; // if(pDetail) // { // pDetail =NULL; // } pDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, predictedLength); pDetail- >cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 pDetail, // 设备接口细节(设备路径) predictedLength, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 if (bResult) { // 复制设备路径到输出缓冲区 for(int i=0;i <17;i++){ ch[i]=(pDetail- >DevicePath+8+i); } ch[17]= "/0 "; if (strcmp(ch,"vid_11dd&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_11dd&pid_11dd")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_11dd")==0) //比较版本号,防止意外出错 { len = strlen(pDetail- >DevicePath); devicename = new char[len]; memset(devicename, 0, len); for(int i=0;i <(len-38);i++) { ch[i]=(pDetail- >DevicePath+i); } ch[len-38]= "/0 "; memset(volume, 0, MAX_PATH); } } } nCount++; } // 释放设备接口数据空间 ::GlobalFree(pDetail); // 关闭设备信息集句柄 ::SetupDiDestroyDeviceInfoList(hDevInfoSet); }

以上就是关于怎么查看USB设备的ID全部的内容,包括:怎么查看USB设备的ID、C#如何获取USB串口设备的数据、delphi如何获取usb数据,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9343225.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存