0

我正在尝试打开连接并传递给定通道的值为此,我需要打开与 enttec open dmx usb 的连接。但我无法创建连接

我尝试列出设备并确保 SN 与硬件匹配

In [34]: import ftd2xx as ft

In [35]: ft.listDevices()
Out[35]: [b'AL05J8AO']

In [36]: ftd2xx.openEx('AL05J8AO', ftd2xx.ftd2xx.OPEN_BY_SERIAL_NUMBER)
---------------------------------------------------------------------------
DeviceError                               Traceback (most recent call last)
<ipython-input-36-9780ebf9f5e6> in <module>
----> 1 ftd2xx.openEx('AL05J8AO', ftd2xx.ftd2xx.OPEN_BY_SERIAL_NUMBER)

~/raj3_env/lib/python3.6/site-packages/ftd2xx-1.1.0rc1-py3.6.egg/ftd2xx/ftd2xx.py in openEx(id_str, flags)
    106     instance for it"""
    107     h = _ft.FT_HANDLE()
--> 108     call_ft(_ft.FT_OpenEx, id_str, _ft.DWORD(flags), c.byref(h))
    109     return FTD2XX(h)
    110

~/raj3_env/lib/python3.6/site-packages/ftd2xx-1.1.0rc1-py3.6.egg/ftd2xx/ftd2xx.py in call_ft(function, *args)
     42     status = function(*args)
     43     if status != _ft.FT_OK:
---> 44         raise DeviceError(status)
     45
     46 def listDevices(flags=0):
4

1 回答 1

1

据我所知,默认情况下会为非 Windows 系统加载 VCP 驱动程序(或者如果相应地刷新 EEPROM)。您可能必须先卸载 VCP 才能启用 D2XX 驱动程序。要检查您是否属于这种情况,您可以尝试启动 ftdi 提供的示例之一。此外,您可以尝试不通过 SN 而是通过端口号来寻址设备。

如果 VCP 是问题,可以通过“sudo rmmod ftdi_sio”将其删除。有时需要额外的“sudo rmmod usbserial”。

此处讨论了一些替代解决方案和方法

编辑:

另一种方法可能是坚持使用 VCP 驱动程序并通过例如 pyserial 打开它。如果我没看错,根据他们提供的代码示例,您要连接的设备实际上有一个 RS485,BaudRate = 250000, PARITY_NONE, STOP_BITS_2, BITS_8。所以只要不需要特殊的 GPIO 访问,你可能会很好。但是您可能在打开 VCP 时也会遇到问题,并且您必须先修复驱动程序问题。可惜我不是这个领域的专家...

于 2019-07-20T10:36:45.640 回答