1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| package main
import ( "github.com/google/gousb" "log" )
func main() { ctx := gousb.NewContext() defer ctx.Close()
dev, err := ctx.OpenDeviceWithVIDPID(0x1111, 0x0000) if err != nil { log.Println("连接USB", "失败", "err:", err) return } if dev == nil { log.Println("连接USB", "为空", "dev:", dev) return } log.Println("连接USB", "完成", "dev:", dev) defer dev.Close()
cfg, err := dev.Config(1) if err != nil { log.Println("定义USB配置", "失败", "err:", err) return } log.Println("定义USB配置", "完成", "cfg:", cfg) defer cfg.Close()
intf, err := cfg.Interface(0, 0) if err != nil { log.Println("定义USB接口", "失败", "err:", err) return } log.Println("定义USB接口", "完成", "intf:", intf) defer intf.Close()
epOut, err := intf.OutEndpoint(0x02) if err != nil { log.Println("定义USB输出点", "失败", "err:", err) return } log.Println("定义USB输出点", "完成", "epOut:", epOut) epIn, err := intf.InEndpoint(0x82) if err != nil { log.Println("定义USB输入点", "失败", "err:", err) return } log.Println("定义USB输入点", "完成", "epIn:", epIn) writes, err := epOut.Write([]byte(command)) if err != nil { log.Println("向USB输出", "失败", "err:", err) return } log.Println("向USB输出", "完成", "err:", writes) buf := make([]byte, 20) readBytes, err := epIn.Read(buf) if err != nil { log.Println("从USB输入", "失败", "err:", err) } if readBytes == 0 { log.Println("从USB输入", "为空", "readBytes:", readBytes) return } log.Println("从USB输入", "完成", "readBytes:", readBytes) log.Println("从USB输入", "完成", "string(buf):", string(buf))
}
|