python - 如何使用 pyusb 正确调用 libusb_exit()
问题描述
我一直在尝试使用 pyusb 与董事会沟通,并且最近发生了一个有趣的问题。每天早上(所以当我超过 12 小时没有使用该板时),它与它的通信有问题。我通过使用 Cygwin 运行基于 Linux 的应用程序找到了一种解决方法。
每当我运行该应用程序时,它都会解决我在一天中遇到的通信问题。翻阅了Linux程序的github代码后,我推测当程序调用libusb_exit()方法时,问题就解决了。
我的问题是我不确定如何在我的代码中正确调用 libusb_exit() 。目前我尝试这样称呼它:
self._backend = usb.backend.libusb1.get_backend(find_library=lambda q: "libusb-1.0.dll")
self._backend.lib.libusb_exit(self._backend.ctx)
我知道这不应该是调用它的方式,因为当我这样做时,每当我在这样做之后尝试与董事会沟通时,我都会得到一个 OSError:
OSError: exception: access violation writing 0x00007FFCDBF41CD0
随后是另一个尝试调用 libusb_exit() 并失败的回溯:
line 642, in _exitfunc
f()
line 566, in __call__
return info.func(*info.args, **(info.kwargs or {}))
line 106, in _do_finalize_object_ref
obj._do_finalize_object()
line 73, in _do_finalize_object
self._finalize_object()
line 722, in _finalize_object
self.lib.libusb_exit(self.ctx)
OSError: exception: access violation writing 0x0000000000000000
我认为这是 libusb 内置的 ctypes 的一个问题。
如果有人对我如何更改代码来解决这个问题有任何见解,将不胜感激。
干杯
解决方案
推荐阅读
- angular - 最初仅显示第一个 mat-form-field
- java - 如何在 Java 中显示 PUWG1992 地图
- python - 分组数据框以获取带有时间戳排序的最新消息
- laravel - 使用 Laravel 和 foreach 创建引导列
- c# - 在 linux 中,单声道调用我的 .so 库返回 System.EntryPointNotFoundException
- c# - c# 从 HTML 中获取元素
- javascript - 在 JavaScript 中请求 POST 并超时
- c++ - 读取带有令牌的文件只运行一次
- audio - lv2 插件开发 - 如何同时读取 MIDI 时间和音符
- php - 将多维数组中的值计数到新数组