如何获取golang的USB设备的序列号?

时间:2016-02-17 07:21:49

标签: go usb serial-number

如何使用golang获取USB设备的序列号?

是否有任何示例代码?

任何知道的人!

2 个答案:

答案 0 :(得分:1)

你必须在golang中使用libusb的包装器(例如gousb)。 但是这个包装器没有命令来获取序列号。 所以你必须实现它。 libusb中的命令是:

C.libusb_get_string_descriptor_ascii

答案 1 :(得分:0)

libusb Go包有一个方法GetStringDesciptorASCII,可用于获取USB设备的S / N.

没有错误处理的示例

package main

import (
    "log"

    "github.com/gotmc/libusb"
)

func main() {
    ctx, _ := libusb.Init()
    defer ctx.Exit()
    devices, _ := ctx.GetDeviceList()
    for _, device := range devices {
        usbDeviceDescriptor, _ := device.GetDeviceDescriptor()
        handle, _ := device.Open()
        defer handle.Close()
        snIndex := usbDeviceDescriptor.SerialNumberIndex
        serialNumber, _ := handle.GetStringDescriptorASCII(snIndex)
        log.Printf("Found S/N: %s", serialNumber)
    }
}