如何在VCP模式下使用FDTI芯片?

我试图得到一个基于FT245RL芯片的SainSmart USB中继板,工作时间很可怕。 我的印象是,我可以用命令行来控制继电器,例如:

echo -e -n "\xFF\x1\x1" > /dev/ttyUSB1 

当设备自动安装,我想我已经设置了波特率和权限,但在我的Debian挤压机或CentOS 5机器上没有任何反应。 SainSmart的支持是毫无价值的。

我决定尝试在Windows上,所以我安装了驱动程序,并在Python中写了一个小程序:

 import serial ser = serial.Serial(2) #COM3 ser.write(chr(255) + chr(0) + chr(1)) ser.close 

依然没有。 也许这是一个硬件问题,所以我安装了一个提供的Windows程序。 当点击继电器button时,它看到设备并工作。 不鼓励,我退出他们的程序,寻找我的错误(找不到任何),但无论如何尝试,它的工作原理! 我写了一个更大的程序来做各种各样的酷东西,很酷的事情发生,直到我拔掉设备。 当我插回去,没有任何工作。 我必须运行并退出继电器控制程序,然后我的代码才能执行任何操作。

我怀疑我必须使用像FT_SetBitMode()这样的d2xx驱动。 有没有办法只使用VCP模式? PyUSB将不会安装在我的电脑上,并不适用于Linux。

我想要的只是一个简单的方法来控制在Linux上使用Python的中继。

我首先建议你先尝试hyperterminal

从你的代码片段看来,你是缺少波特率(假设其余的将是默认值)。 我真的不知道它是否重要,但我总是明确地将端口设置为Serial('COM3') ,这种方式可能失败的一个点:)

也许你对Python没有问题,但是要控制这个设备。

您应该尝试了解设备是否对控制线状态(DST,DTR等)有特殊的要求。

而且,不要忘记, 亚历克斯已经提到的沟通速度。

我有同样的问题,我认为你是正确的FT_SetBitMode()。 最终我通过使用ftd2xx (你可以通过点)得到它的工作。 您还需要安装D2XX 驱动程序 。

 import ftd2xx if ftd2xx.listDevices() < 1: print "No relays found. Exiting..." exit() else: print "Initializing relays..." relays = ftd2xx.open(0) relays.setBitMode(255,1) # I think this uses FT_SetBitMode() relays.write(b'\01\01') # relay one on relays.write(b'\01\01') # relay two on relays.write(b'\00\00') # all relays off relays.close()