我有一台投影仪,我想使用名为“PJlink”的协议通过 TCP 控制它,但我无法让它工作。我目前正在尝试使用 WSL 中的 Windows 终端执行此操作netcat
。我认为我已经成功连接到投影仪,因为当我使用时,nc <host> 4352
我收到一条响应说PJLINK 0
。这让我假设连接已建立。
但是,当我按照 PJlink 的规范发送命令时,我没有得到任何响应。例如,如果我写入%1POWR ?
并点击Enter,则不会得到任何响应。
根据规范,所有命令:
- 以包含百分比字符的标题开始%......
- 后面跟着一个描述命令类别的字符......
- 然后是大写的命令......
- 后跟一个Spaceand 参数或者一个?and ...
- 以回车符结束。
我怀疑我没有发送正确的消息,而是发送了 UTF-8 或没有在末尾发送回车符。
有没有办法准确检查我发送的内容?然后发送我想要发送的内容?
答案1
您可以使用 PJLinkTEST4CNT.exe 程序测试发送的内容https://pjlink.jbmia.or.jp/english/dl_class2.html。
例如这个测试 Python 脚本
#!/usr/bin/python # This is client.py file
import socket # Import socket module
host = "192.168.1.44"
port = 4352
with socket.socket(socket.AF_INET,socket.SOCK_STREAM ) as s:
s.connect((host, port))
print (s.recv(1024))
s.sendall(b'%1POWR ?\r')
print (s.recv(1024))
s.close() # Close the socket when done
输出结果如下:
# python client.py
b'PJLINK 0\r'
b'%1POWR=1\r'
如果我正确阅读了 PJLink 协议文档,那么在 netcat 中输入命令可能太慢了。