2

我正在尝试获得一个基于 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 程序。当我单击中继按钮时,它会看到设备并工作。沮丧,我退出了他们的程序,在我的程序中寻找错误(找不到任何错误),但无论如何都要尝试,它可以工作!我编写了一个更大的程序来做各种很酷的事情,很酷的事情会发生,直到我拔掉设备。当我重新插入时,没有任何效果。在我的代码执行任何操作之前,我必须运行并退出继电器控制程序。

我怀疑我必须对 FT_SetBitMode() 之类的 d2xx 驱动程序做一些事情。有没有办法只使用VCP模式?PyUSB 不会安装在我的计算机上,也不适用于 Linux。

我想要的只是一种使用 python 在 Linux 上控制继电器的简单方法。

4

4 回答 4

1

我首先建议您先尝试一下hyperterminal

从您的代码片段中,您似乎缺少波特率(假设其余的将是默认值)。而且我真的不知道这是否重要,但我总是明确地将端口设置为Serial('COM3'),这样可能会减少一个故障点:)

于 2013-04-23T20:25:14.350 回答
1

我有同样的问题,我认为你对 FT_SetBitMode() 是正确的。ftd2xx最终我通过使用(你可以通过 pip 获得)让它工作。您还需要安装 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()
于 2017-10-11T20:31:47.837 回答
0

可能您对 Python 没有问题,但可以像这样控制设备。

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

而且,别忘了,Alex 已经提到的通信速度。

于 2013-04-23T20:30:19.690 回答
0

在 Windows 上使用虚拟 com 端口我发现我必须使用 115k 波特

于 2021-01-19T02:28:20.557 回答