0

我正在为 Blackmagic 的以太网控制协议制作 python 绑定(如https://documents.blackmagicdesign.com/UserManuals/HyperDeckManual.pdf?_v=1528269592000中所述,第 60 页)。然而,简单的套接字连接似乎失败了,因为每个命令都被服务器的问候拒绝。

该协议记录了软件如何与某些 blackmagic 设备通信,在这种情况下,Blackmagic 的 hyperdeck,该设备运行一个 TCP 服务器,不断侦听端口 9993,在 cmd 上我可以简单地 telnet 到它并发出命令,你会期望它在 python 中一样简单,但是对于服务器的问候消息,设备的信息,每个命令都会被忽略。我已经做套接字至少 3 个月了,我尝试了几种代码方法,但似乎都失败了。

对于我用过的最简单的测试:

import socket

HOST = "device's ip"
PORT = 9993        

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'play')
data = s.recv(1024)

print(data)

以及尝试重复该命令的修改版本:

import socket
import time

HOST = "device's ip"
PORT = 9993        

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'play')
data = s.recv(1024)
time.sleep(2)
s.sendall(b'play')

它应该开始视频播放,如文档所述,以及当我通过 telnet 发出命令时发生的情况,但是该命令被完全忽略并且数据始终等于:b'500 连接信息:\r\n协议版本:1.9\r\n型号: HyperDeck Studio Mini\r\n\r\n' ,服务器的字节形式的问候消息,它应该是 200 ok 或某种错误/确认消息,如文档所述。

这非常烦人,我曾考虑过使用 subprocess 并通过 cmd 发出命令作为替代方案,但有些事情告诉我有一个更简单的解决方法。

4

0 回答 0