用 PJLink 控制投影机开关机(实操教程)

2026-06-13

本文基于 PJLink 公开标准,讲通用对接思路;具体型号的支持范围、可用命令与信源编号以厂商说明书为准。文中命令均为 PJLink 标准命令,不针对任何单一品牌硬编参数。

闭馆时间到了,展厅里十几台投影要一台台关。你举着遥控器满场跑,对不准角度还得反复按;有的机位吊在三米高的桁架上,遥控根本够不着。第二天开馆更折腾——挨个开机、等预热、再逐台切回该放的信源。这活儿一天两遍,谁干谁烦。

更糟的是,很多网络中控系统里投影这一块是”黑盒”:厂商各说各话,A 家的控制协议到了 B 家的机器就推不动。今天要讲的 PJLink,就是来治这个病的——它让你用一套统一的网络命令,把不同品牌的投影机开关机、切信源、查状态全接管过来,编进中控一键搞定。

PJLink 是投影机行业的一套厂商无关的网络控制标准。只要投影机支持 PJLink 并联了网,你就能用同一套命令去控制它,不用管它是哪个牌子。这一点对做展厅、做中控的人太关键了:一个项目里混着几家品牌的投影很常见,有了 PJLink,中控这边只写一套逻辑,底下换什么机器都通。

它分两个等级。Class 1 是基础款,覆盖了你日常最需要的操作:开关机、信源切换、静音、以及电源/信源/错误状态的查询——本文讲的全部在这个范围内,绝大多数支持 PJLink 的投影都有。Class 2 是扩展款,加了搜索发现、序列号读取、状态主动通知等能力,支持的机型少一些。做投影控制,吃透 Class 1 就够用了。

底层它走 TCP,默认端口 4352。命令是纯文本的 ASCII,人眼能读、手能敲,这也是它好调试的原因——出了问题你可以用最土的办法直接手发命令去试。

前置条件

动手之前,先把这几件事确认好,能省掉后面一大半排错时间:

  • 投影机支持 PJLink 且已联网。翻说明书或菜单确认有 PJLink 功能,网线插好或 Wi-Fi 连上。
  • 记下投影机 IP。在投影机的网络菜单里查,最好在路由器上给它绑一个固定 IP(DHCP 保留),否则哪天地址一变,中控就集体失联。
  • 控制端和投影机同网段,能 ping 通。在中控主机上 ping 投影机IP,通了再往下走。ping 不通就是网络层的事,先解决网络别急着发命令。
  • 认证密码。部分机型 PJLink 默认要密码认证,去投影菜单里查或设一个,记牢——后面握手要用。也有机型默认不带认证,那就更简单。

最小可用:先跑通一次

别急着上中控。咱们先用最原始的方式,手动把一台投影开机,让你先有个成就感、也确认这条链路是通的。

假设投影 IP 是 192.168.1.50,暂时没设认证密码。在中控主机或任意同网段电脑上,用一个能发 TCP 裸数据的工具——Windows 上可以用带 Raw/TCP 模式的串口网络调试助手(比如 SSCOM、NetAssist 这类),Linux/Mac 上可以直接 telnetnc

telnet 192.168.1.50 4352

连上的那一刻,投影机会先主动回你一句。如果它不要认证,你会看到:

PJLINK 0

0 表示”无需认证,直接发命令”。这时候你敲入开机命令,结尾一定要带回车(CR,0x0d)

%1POWR 1

投影机应该回:

%1POWR=OK

=OK 就是它收到并执行了。抬头看一眼——投影灯亮了、风扇转起来了,成了。关机同理,发 %1POWR 0,一样回 %1POWR=OK

这里有个新手最容易栽的坑:很多调试工具默认不帮你加 CR,你敲完命令直接发,投影机没等到结尾符,就当你还没说完,一直不回。发之前务必确认工具里勾了”发送新行/加 CR”,或者手动在命令后补一个回车字节。

跑通了这一次,剩下的就都是在这个基础上加料。

命令速查表

PJLink 的命令格式是固定的一套:% + 类号(1 或 2)+ 4 字节命令 + 空格 + 参数 + CR。命令体大小写不敏感。带 ? 的是查询,投影机会把当前值回给你。下面是 Class 1 里你最常用的:

命令作用参数 / 返回
%1POWR 1开机%1POWR=OK
%1POWR 0关机%1POWR=OK
%1POWR ?查电源状态0 待机 / 1 开机 / 2 冷却中 / 3 预热中
%1INPT xx切换信源xx 见下方取值,回 %1INPT=OK
%1INPT ?查当前信源回当前信源编号,如 31
%1AVMT 31图声全静音(黑屏)%1AVMT=OK
%1AVMT 30取消图声静音10/11 单独控图,20/21 单独控声;末位 1=开启静音、0=解除
%1NAME ?查设备名回投影机名称,用于识别是哪台
%1INF1 ?查厂商名
%1INF2 ?查型号
%1ERST ?查错误状态回 6 位数字,见”进阶”节
%1LAMP ?查灯泡/光源时长与点亮状态回累计小时数 + 点亮标志
%1CLSS ?查支持的 Class 等级12

信源编号 xx 的规则:十位表示类型,个位表示第几路

  • 1x = RGB(11 为 RGB1,12 为 RGB2)
  • 2x = 视频(复合/S 端子等)
  • 3x = 数字(HDMI、DVI,31 常是 HDMI1)
  • 4x = 存储(USB 等内置存储回放)
  • 5x = 网络(网络串流输入)

具体每台机器到底有哪几路、编号怎么排,各家不完全一样——最稳的办法是先发 %1INST ?(查可用信源列表)或直接对着投影现有接口一路一路试,把实际编号记进你的配置表。别照抄别人项目的编号硬套。

认证握手详解

如果投影机设了 PJLink 密码,连接时它回的就不是 PJLINK 0,而是:

PJLINK 1 498e4a67

1 表示”需要认证”,后面那串 498e4a67 是它随机生成的8 位十六进制随机数(每次连接都不同)。这时候你不能直接发命令,得先按 Class 1 的摘要认证走一遍:

  1. 拼串:把随机数和你的密码首尾相接,得到 498e4a67 + 你的密码(比如密码是 JBMIAProjectorLink,就拼成 498e4a67JBMIAProjectorLink)。
  2. 算 MD5:对这整个拼接串做 MD5,得到一个 32 位十六进制的哈希。
  3. 拼进命令:把这个 32 位哈希直接放在命令最前面,紧跟着你要发的命令,一起发出去。比如开机就发 <32位MD5>%1POWR 1 + CR。
  4. 看回复:认证对了,投影机正常回 %1POWR=OK;密码错了,它回 PJLINK ERRA(认证错误)并断开连接。

几个实战注意点:这个随机数一次连接只用一次,用完就废;下次连接投影机会给一个新的随机数,你得重新拼、重新算。也就是说,如果你要连发好几条命令,通常一条命令连一次、认证一次、发完就断,而不是复用同一个哈希。中控软件里这套流程都是自动做的,但你手动调试时得心里有数——手算 MD5 太麻烦,可以用命令行 echo -n "498e4a67你的密码" | md5sum 之类的工具先把哈希算出来再粘进去试。

只有一两台投影,值得为它上中控吗

编进中控之前,先想清楚这个问题。如果整个场子就一两台投影,需求也只是”到点自动开关、偶尔切个源”,那么专门配一台中控主机加面板加布线,成本和工期都不太划算。

这种情况有条轻量路径:让现有那台播放电脑兼任发指令的角色。上面的脚本挂进 Windows 任务计划,到点跑一次,开关机就自动了。不想自己维护脚本(认证、超时、重试这些琐碎细节写全其实挺费劲),可以用装在被控电脑上的代理程序代劳——我们自研的 SoftAgent 支持直接下发 PJLink 指令(含 MD5 认证密码),这项能力在免费版里就能用,配合它自带的定时任务,“到点开投影、闭馆关投影”这个最常见的需求不用另配中控主机就能跑起来。

那什么时候还是得上中控?要墙面面板让现场人员一键操作、要联动幕布灯光这类非网络设备、要做多设备时序编排、或者设备数量上了十几台——满足任意一条,就别用脚本硬扛了,往下看。

接入中控做开闭馆场景

手动能通了,接下来才是正题:把它编进中控,让”一台台跑”变成”点一下”。

思路很直接。在 SoftControl 展厅中控 这类可视化中控里,你为每台投影建一个 PJLink 设备,填好 IP、端口 4352、认证密码,中控内部会自动处理 TCP 连接和认证握手,你只需要往下”选命令”。

然后建两个场景:

  • “开馆”场景:把全部投影的 %1POWR 1 排进去;讲究一点的,再给每台加一条延时后的 %1INPT xx,等预热完(查 POWR?1)自动切到该放的信源。早上到岗点一下,全场投影自己开、自己切好画面。
  • “闭馆”场景:把全部投影的 %1POWR 0 排进去。闭馆点一下,十几台一起关。

再进一步,中控一般都带定时任务:设成周一到周日 9:00 触发”开馆”、17:30 触发”闭馆”,连点都不用点了。展项联动也顺手——平时用 %1AVMT 31 让投影黑屏待命,观众触发某个互动装置时再发 %1AVMT 30 恢复画面,比反复开关机对灯泡/光源更友好,响应也快。这套编排怎么落地,可以看看我们的解决方案实际案例里的做法。

故障排查表

真上手总会遇到不回话、不听话的情况。对照这张表,先定位再动手,别瞎试:

现象可能原因解决
发命令完全没反应命令结尾没加 CR / 少了 %1 前缀 / 命令拼错确认工具勾了”加 CR”,前缀和 4 字节命令一字不差
连接直接被拒端口不是 4352 / 防火墙拦了 / PJLink 功能没开核对端口,投影菜单里开启 PJLink,检查网络 ACL
PJLINK ERRA认证密码错,或没做握手核对密码,按摘要认证流程拼 MD5
%1POWR=ERR3 之类设备当前状态不允许该操作ERR1 命令不支持、ERR2 参数错、ERR3 时机不对、ERR4 投影故障
刚关机开不起来处于冷却期(POWR?2等冷却结束回到 0 待机,再发开机
切信源不生效信源编号 xx 和这台机器实际接口对不上%1INST ? 查实际可用编号,别照抄
查询命令收不到返回TCP 连接没建好 / 命令发出但连接已断先确认 ping 通、端口通,一次连接内完成收发
时通时不通投影 IP 是 DHCP 动态分配的,地址变了在路由器上给投影绑固定 IP

特别提醒 ERR3——它是投影控制里最常见的”看起来失败了其实是时机问题”。你刚发完关机紧接着发开机,投影正在冷却,它就回 ERR3 拒绝你。这不是命令错,是它得先凉下来。中控脚本里凡是”关了又要开”的场景,中间都得先轮询 POWR?,等状态到位再发下一条。

进阶:批量、监测与状态读取

跑通单台、接进中控之后,还能再往上做两层。

批量脚本化。 十几台投影,与其在中控里一台台点,不如把 IP 列成一张表,用脚本循环连接、认证、发命令。开馆脚本遍历全表发 POWR 1,闭馆遍历发 POWR 0,新增一台投影只改配置表、不改逻辑。这也是 PJLink”厂商无关”最香的地方——一套脚本吃遍全场不同品牌。

在线监测。 写个轮询任务,每隔几分钟对全表投影发一遍 %1POWR ?%1NAME ?。连不上或超时的,就是掉线/故障,推个告警出来。这样闭馆后你在后台就能看到哪台没正常关、开馆前能提前发现哪台有问题,不用等观众投诉才知道。

读错误与光源状态。 %1ERST ? 回的是 6 位数字,从左到右分别代表:风扇、灯泡/光源、温度、盖板、滤网、其它——每位 0 正常、1 警告、2 错误。轮询里带上它,就能在灯泡快坏、滤网该清、温度偏高时提前预警。%1LAMP ? 回累计使用小时数,做灯泡/光源寿命管理正好——快到额定寿命就安排更换,别等它在开馆时罢工。这类底层协议对接的通用套路,和 PJLink 协议速查 以及 ModbusTCP/UDP 基础 是一脉相承的,都在协议库里能找到。

动手清单

跟着这张单子走一遍,你就完整掌握了:

  • 查到投影 IP,并在路由器上绑成固定地址
  • 中控主机 ping 通投影机
  • 用调试工具手动发 %1POWR 1(记得加 CR),看到 %1POWR=OK 且投影亮起
  • 若有密码,跑通一次摘要认证握手
  • 对照信源接口,用 %1INST ? / 逐路试,确定每路的 xx 编号并记进配置表
  • 在中控里建好每台投影的 PJLink 设备
  • 编好”开馆""闭馆”两个场景,各点一次验证
  • 配好定时任务(如 9:00 开、17:30 关)
  • 加一个轮询任务,POWR? + ERST? 做在线监测与故障预警

小结

PJLink 的价值不在于某一条命令多神奇,而在于它把”满场跑遥控”这件苦差事,变成了一套可编排、可批量、可监测的网络控制。先手动跑通一台建立信心,再接进中控做开闭馆场景,最后用轮询把它升级成能自己报警的设备网络——一步步来,不难。

延伸阅读:PJLink 协议速查Modbus 协议入门TCP/UDP 通信基础,更多底层对接资料见协议库


想免写代码可视化配置 PJLink 投影机、把多台投影编进开闭馆一键场景?了解 SoftControl 展厅中控,或直接说说你的现场需求,我们帮你定制方案聊聊对接

需要展厅软硬件方案或定制开发?