先把索尼的四种协议理清楚
索尼的控制协议比任何投影机品牌都多,而选错协议是绝大多数困惑的来源:
| 协议 | 传输方式 | 用在什么场合 |
|---|---|---|
| ADCP | 串口(RS-232)和 IP | 串口控制就用这个 |
| SDCP / PJ Talk | 仅 IP | 网络控制,二进制协议 |
| SDAP | 仅 IP | 自动发现——在网络上广播自己 |
| PJLink | 仅 IP | 跨品牌的基础操作 |
要走串口线,你要的是 ADCP。 它是文本协议、人能读懂,用终端就能敲。
有一个重要例外:部分较老的和消费线索尼投影机用的是二进制十六进制协议,不是 ADCP。 如果你那台机器的手册给的是一张张十六进制字节表、而不是 power 这样的单词,说明你手上是二进制那一族,下面的语法一条都不适用。动手之前先确认自己在哪一族,否则一下午就没了。
串口参数——所有人都栽在这一行
| 参数 | 值 |
|---|---|
| 波特率 | 38400 |
| 数据位 | 8 |
| 校验位 | 偶校验(Even) |
| 停止位 | 1 |
| 流控 | 无 |
把校验位那行再看一遍。 你会遇到的几乎所有其他中控设备——爱普生、松下、三星、大多数矩阵——都是 9600/8/无校验/1。索尼是 38400/8/偶校验/1。
这是索尼不说话的头号原因。 你的线没问题,命令没问题,而你的终端还停留在前三台投影机用的那套参数上。校验位不对时,你要么什么都收不到、要么收到一堆乱码,而症状里没有任何东西会指向校验位。
索尼没反应,先把参数设成 38400 8 E 1,再去查别的。
命令格式:注意那对引号
ADCP 命令是小写单词,而且参数要用双引号包起来:
power "on"
power "off"引号是协议的一部分,不是文档里的标注写法。 不带引号的 power on 不是合法的 ADCP 命令。
行结束符是 CR + LF:
power "on"<CR><LF>也就是:power、空格、"on"、回车、换行。多数终端软件可以自动追加 CR+LF——去改那个设置,而不是手敲转义符。
来自现场的结束符提醒:有据可查的案例里,power "on" 只带一个 \r 时返回 err_cmd,改成 \n 就好了。不同机型世代的行为并不一致。如果你对某条命令很有把握却一直收到 err_cmd,先换另一个结束符试试,别急着怀疑命令写错了。
认证
ADCP 有认证环节,默认设置是开启。走 IP 时你可能需要显式处理。
走串口连接时,这个功能无论设置如何都是始终开启的——但因为串口本身就是点对点,你并不需要额外做什么。它真正会咬人的时刻,是你把同一套命令搬到 IP 上时,突然需要串口路径从来没要过的凭据。这个切换是常见的意外。
指令参考
ADCP 的词汇读起来像大白话。最常用的:
| 命令 | 作用 |
|---|---|
power "on" | 开机 |
power "off" | 关机 |
power ? | 查询电源状态 |
input "hdmi1" | 切换输入 |
input ? | 查询当前输入 |
blank "on" / blank "off" | 画面消隐 |
aspect "..." | 画面比例 |
picture_mode "..." | 画面预设 |
error_status ? | 错误状态 |
机型覆盖差异很大。 索尼发布的是两份独立文档:一份 Protocol Manual (Common) 讲语法,一份 Protocol Manual (Supported Command List) 讲每个型号实际实现了哪些命令。一条命令是合法的 ADCP,不等于你这台机器实现了它——这往往正是 err_cmd 想告诉你的事。
输入源名是字符串("hdmi1"、"input_a" 等),不同机型系列不一样。和所有品牌一样,可靠的调试方法是:手动切到某个输入,发 input ?,把返回值原样记下来。
err_cmd 到底意味着什么
err_cmd 看着像失败,某种意义上也确实是——但它是你能收到的最有用的一种失败。
收到 err_cmd 证明了:
- 线是对的
- 波特率和校验位是对的
- 投影机的供电足以解析输入
- 你的帧完整到达了解析器
换句话说,命令层以下的一切都是好的。问题被缩小到命令字符串本身:单词错了、少了引号、结束符不对,或者这个型号不支持这条命令。
一台返回 err_cmd 的投影机,比一台什么都不返回的投影机离成功近得多。 调试时看到它,就该停止查硬件、开始查语法。
为什么你的索尼命令没有回应
按可能性排序:
1. 校验位设成了"无"。 必须是偶校验。见上——这是索尼独有的那一条。
2. 波特率用了 9600。 ADCP 机型是 38400。
3. 参数少了引号。 power on 不等于 power "on"。
4. 这一代机型的结束符不同。 \r 返回 err_cmd 就试 \n,反之亦然。
5. 你手上是二进制协议的机型。 老款和消费线根本不说 ADCP。翻手册看是不是十六进制表。
6. 用了直通线而非交叉线。 2 脚 RXD、3 脚 TXD、5 脚 GND——和所有品牌一样的三线交叉。
7. 待机功耗模式。 和所有投影机一样,低功耗待机会关掉控制接口,产生那个标志性症状:开着机时命令都好用,唯独开机命令永远失败。
ADCP 走 IP
由于 ADCP 串口和 IP 都跑,你在线缆上验证过的字符串可以直接搬到网络上——和爱普生一样的便利。这通常是一个工程正确的终态:调试期走串口(什么都看得见),转常态运行走 IP。
如果展厅里有多个厂商的投影机,PJLink 能用一套命令搞定所有机器的开关机、输入和消隐,只在索尼专有功能上才回落到 ADCP。
用 SoftControl 控制
SoftControl 通过串口或 TCP 控制索尼,校验位是按设备可配的字段——所以 38400/8/偶校验/1 这个要求是填在设备属性里的一项,而不是要你每次去记的事。指令测试页会显示实际发出的字节和原始回复,所以 err_cmd 会作为可见的文本呈现出来,而不是被当成一个笼统的"失败"吞掉。