使用 netcat 发送 PJlink 命令

使用 netcat 发送 PJlink 命令

我有一台投影仪,我想使用名为“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 中输入命令可能太慢了。

相关内容