我正在尝试使用基于FT245RL芯片的SainSmart USB中继板,并且工作非常糟糕。我的印象是我可以从命令行控制继电器,例如:
echo -e -n "\xFF\x1\x1" > /dev/ttyUSB1
虽然设备是自动安装的,但我认为我已经设置了波特率和权限,我的Debian squeeze或CentOS 5机器上没有任何反应。 SainSmart的支持毫无价值。
我决定尝试使用Windows,所以我安装了驱动程序并在python中编写了一个小程序:
import serial
ser = serial.Serial(2) #COM3
ser.write(chr(255) + chr(0) + chr(1))
ser.close
仍然没有。也许这是一个硬件问题所以我安装了一个提供的Windows程序。当我点击继电器按钮时,它会看到设备并正常工作。气馁,我退出他们的程序,寻找我的错误(找不到任何),但无论如何尝试它,它的工作原理!我写了一个更大的程序来做各种很酷的事情和很酷的事情发生,直到我拔掉设备。当我重新插入时,没有任何作用。在代码执行任何操作之前,我必须运行并退出继电器控制程序。
我怀疑我必须对像FT_SetBitMode()这样的d2xx驱动程序做些什么。有没有办法只使用VCP模式? PyUSB不会安装在我的电脑上,也不适用于Linux。
我想要的只是一种使用python在Linux上控制中继的简单方法。
答案 0 :(得分:1)
我建议您先试用hyperterminal
。
从您的代码段开始,您似乎缺少波特率(假设其余的将是默认值)。而且我真的不知道它是否重要,但我总是明确地将端口设置为Serial('COM3')
,这样就少了一个失败点:)
答案 1 :(得分:1)
我遇到了同样的问题,我认为你对FT_SetBitMode()是正确的。最终我使用ftd2xx
(你可以通过pip获得)来使用它。您还需要安装D2XX drivers。
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()
答案 2 :(得分:0)
答案 3 :(得分:0)
在 Windows 上使用虚拟 com 端口我发现我必须使用 115k 波特