使用go语言监听usb插拔

Go语言不支持直接监听USB插拔事件,但是可以使用第三方库来实现。

一个常用的第三方库是 github.com/warthog618/gpiod,它提供了一个高级API,可以通过GPIO引脚来控制和监听设备的插拔。

这是一个使用该库实现的示例代码:

package main

import (
	"fmt"
	"github.com/warthog618/gpiod"
)

func main() {
	c, err := gpiod.NewChip("gpiochip0")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer c.Close()

	line, err := c.RequestLine(4, gpiod.AsInput)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer line.Close()

	evtCh := make(chan gpiod.LineEvent)
	line.Listen(gpiod.EdgeBoth, evtCh)

	for {
		evt := <-evtCh
		fmt.Printf("GPIO line %d changed to %d\n", evt.Line(), evt.Value())
	}
}


该代码监听了GPIO引脚4,并在该引脚发生变化时打印相应消息。请注意,您需要有足够的权限才能访问GPIO引脚,并且需要根据实际情况调整代码以适应您的系统。