<p>这里有两种方法,这取决于你想去哪里。A) 您可以获得一个类似usbrelay的命令行版本,然后从python发出命令,B)您可以从python内部打开一个串行连接并使用usb核心或者usb.util向电路板发送串行命令。在</p>
<p>A)Darrylb在github上的工作是一个很好的概述,在这里可以得到一个用于HID兼容继电器的命令行工具。<a href="https://github.com/darrylb123/usbrelay" rel="nofollow noreferrer">https://github.com/darrylb123/usbrelay</a></p>
<p>如果您使用debian:</p>
<pre><code>sudo apt-get install usbrelay
</code></pre>
<p>然后更新rules.d文件,这样就不必一直使用sudo,并且可以在python中调用命令行。当然,这有一定的安全隐患,如果你打算长期使用,你应该搜索一下。在</p>
<p>不管怎样,一旦你安装了它,你只需从命令行调用它,它就会以某种格式列出你的中继设备的ID,后缀看起来像是从1到8。在</p>
^{pr2}$
<p>输出将显示您所连接的板上的信息,并给您中继ID和状态。“1”打开,“0”关闭。在</p>
<p>然后从python内部:</p>
^{3}$
<p>要关闭这些,只需将赋值中的1改为0,就可以同时完成所有8个中继号码。因此,您可以从那里继续编写各种函数,以独特的组合、延迟等方式触发中继。您还可以使用python中的子进程:</p>
<pre><code>import subprocess
subprocess.run(['usbrelay', '5291D_1=1', '5291D_3=1'], stdout=subprocess.PIPE).stdout.decode('utf-8')
</code></pre>
<p>B)要采用串行连接方法,您必须首先了解板的正确串行命令是什么。例如,我有一个sainsmart 16通道继电器,它要求我发送串行命令,因为它与HID不兼容。在</p>
<p>在Sainsmart Wiki上找到您的型号:
<a href="http://wiki.sainsmart.com/index.php/SKU" rel="nofollow noreferrer">http://wiki.sainsmart.com/index.php/SKU</a></p>
<p>然后下载zip文件并查看中继指令。对我来说,我使用了RJ工作的修改来发送一个串行命令。<br/>
<a href="https://gist.github.com/RJ/7acba5b06a03c9b521601e08d0327d56" rel="nofollow noreferrer">https://gist.github.com/RJ/7acba5b06a03c9b521601e08d0327d56</a></p>
<p>这是我的SKU编号说明(可能与你的不同!)
3A 46 45 30 35 30 30 35 30 30 35 46 30 30 46 30 46 39 0D 0A上的CH-6</p>
<p>您需要为串行消息添加一个0x前缀:</p>
<pre><code>c6_on=[0x3A, 0x46, 0x45, 0x30, 0x35, 0x30, 0x30, 0x30, 0x35, 0x46, 0x46, 0x30, 0x30, 0x46, 0x39, 0x0D, 0x0A]
</code></pre>
<p>然后您可以将这些命令发送到usb.core.Endpoint在上面的git-gist链接中使用RJ如何处理它,这里的“ep”是usb.core.Endpoint公司名称:</p>
<pre><code>ep.write(c6_on)
</code></pre>
<p>不管怎样,只要你能A)从命令行控制电路板,或者B)知道要发送的正确串行命令,那么你就可以想出如何用python来实现它。唯一需要注意的是确保您有适当的依赖关系,并监视权限。在</p>