【问题标题】:Working with USB in Go在 Go 中使用 USB
【发布时间】:2014-07-11 19:24:37
【问题描述】:

有人可以提供使用go-libusb 的示例(或者可能是在Golang 中使用USB 的任何其他库)。

  1. 我已经创建了包libusb
  2. https://github.com/popons/go-libusb/blob/main/libusb.go复制了内容

有一个错误:

Unresolved symbol: '_Cstruct_usb_device_descriptor' 

谢谢。

【问题讨论】:

  • 你需要某种 c 库来编译它。 libusb 也许?你在什么操作系统上?
  • 我用的是Win8。如果有错误请纠正我:我必须从sourceforge.net/projects/libusb下载。但是如何链接 Go 和那个库呢?

标签: go usb


【解决方案1】:

首先你必须从http://www.libusb.org/wiki/libusb-win32 安装libusb,然后将// #include<usb.h> 更改为:

/*
    #cgo LDFLAGS: -lusb
    #include <usb.h>
*/

还有descriptor _Cstruct_usb_device_descriptordescriptor C.struct_usb_device_descriptor

或者从https://github.com/OneOfOne/go-libusb拉我的叉子,我已经发送了一个包含更改的拉取请求。

【讨论】:

  • “那个库已经过时了”,如果你能提供更好的选择,我将不胜感激(至于现在我找不到有用的东西)
  • 顺便说一句,我也尝试过使用(测试)这个包:github.com/tarm/goserial。 1)为了安装这个包,我执行了“go get github.com/tarm/goserial”命令 2)创建了新包,但是 3)它也没有编译,serial_windows.go 文件中有几个错误,例如:表达式类型不匹配,预期类型是 uint32。不幸的是,该库没有其他配置信息,可以 smb。推荐如何配置或安装这些库
  • 我根本不用windows。
  • 非常感谢,现在它可以编译了,但是在启动 main 时出现“exec: "gcc": executable file not found in %PATH%"。根据文档:“要构建 cgo 包,只需像往常一样使用 go build 或 go install。go 工具识别特殊的“C”导入并自动对这些文件使用 cgo。”那么,应该添加哪些额外的配置
  • 那表示gcc没有安装,我真的不太了解。
【解决方案2】:

poponsgo-libusb packagelibusb-0.1 基于C 的USB 驱动程序的封装。 libusb-0.1 是“已弃用且未维护”。 [来源:libusb API version overview]

如果要在 Go 中使用 USB,我建议使用 libusb 1.0 (source on GitHub) Go-driver,例如:

  • gousb — 最初由 Kyle Lemons 创建。有较新的分叉,例如 truveris 的分叉。
  • libusbDiscloure:我是原创者。

上述两个 Go 驱动程序都需要安装 C 版本的 libusb。要在 Windows 上安装,请查看libusb Windows driver installation instructions,它推荐使用Zadig。您还可以查看 SO 问题 Installing libusb-1.0 on Windows 7,但唯一的答案似乎显示了如何安装 libusb-0.1 而不是 libusb-1.0。

作为 Windows 用户,我知道这对你没有帮助,但对于 OS X 用户,可以使用 Homebrew 安装 libusb:

$ brew install libusb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多