# # 逆向工程置瓶机:我们如何将老旧保龄球设备与移动应用集成
在经过三年失败尝试从机械保龄球机(置瓶机)中提取数据后,Brooklyn Bowl 团队转向逆向工程关键的传感器数字化单元。主要障碍包括专有接口、过时的技术栈以及缺乏文档。本文将拆解系统的架构奇葩之处,为什么标准集成方法失败,以及那个虽然不优雅但真正奏效的解决方案。
置瓶机架构与数据流
机械置瓶机是一台复杂的机器,让人联想到坦克的自动装弹机。球投出后,光学传感器触发检测物体经过。然后,一个带有孔洞的测量框架下降,使用光电二极管或触点探针检查每个位置是否有瓶子。传感器数据输入 NextGen 单元,该单元将其转换为游戏事件(比如击倒的瓶子数量)。这个单元通过专有的电流环串行接口连接到 Dell OptiPlex 3020 服务器(2014 款)。服务器处理游戏状态,并在球道上方的显示器上显示结果。
关键是要明白,机器本身不数字化信号——这是外部 NextGen 单元的责任。数据以原始十六进制格式发送,没有标准协议。系统不支持现代技术如 IoT 或 MQTT,这使得与外部系统(如移动应用)的集成极其困难。
三大根本集成挑战
提取数据的尝试遭遇三大不可逾越的障碍:
- Brunswick 和 AMF 的商业限制。 制造商故意阻断第三方集成,以垄断附加模块销售(例如,用于在网站显示比分或与会员卡集成的模块)。任何变通方案都需要购买许可证,从经济上不可行。
- 过时的技术栈。 Dell 服务器运行 FoxPro 和 Sybase SQL Anywhere 数据库。FoxPro 在写入时锁定数据库,如果同时读取会导致主软件崩溃。Sybase 需要 ODBC 驱动,凭证埋藏在 Brunswick 二进制文件中,没有反编译几乎无法访问。
- 无推送机制且数据不稳定。 系统不在事件时推送数据;服务器不断轮询它。而且,游戏状态可能被修正:例如,先记录击倒两瓶,然后瞬间修正为十瓶全倒。这些异步修正导致数据不一致,无法实现可靠的事件流。
失败方法:剖析缺陷
团队和聘请的工程师测试了四种方法,都不适合生产环境:
- 读取 Dell 服务器上的数据库。 连接 FoxPro 或 Sybase 会引发锁冲突并崩溃核心软件。即使成功读取也有延迟,不适合实时移动应用。
- 与 NextGen 单元集成。 直接访问电流环获得原始十六进制数据,但没有文档,解码像解谜。流量分析显示格式随机器状态变化,状态修正在流中添加“噪声”。
- 球道上的计算机视觉。 安装摄像头,使用 OpenCV 检测瓶子位置,需要完美照明和校准。在真实条件下(球员移动、阴影、眩光),准确率降至 70% 以下,无法接受。
- 完全重写 NextGen。 模拟该单元技术上极具挑战:需要复制所有置瓶机交互,包括状态修正处理。项目在原型阶段因复杂度而搁浅。
像通过 HDMI 分路器从显示器 OCR 或打印机仿真这样的方法没测试——由于额外故障点,可靠性似乎很低。
有效解决方案:替换数字化单元
当前方案逆向工程了 NextGen 单元。工程师没有与遗留系统集成,而是构建了一个自定义模块,直接连接置瓶机的传感器。这个模块:
- 捕获光电二极管和触点探针的模拟信号。
- 以 100 Hz 频率数字化数据,过滤误触发。
- 生成 JSON 格式事件,并通过 MQTT 发送到服务器。
关键优势是与遗留系统隔离:新模块完全绕过 Dell 和 NextGen,避开所有限制。缺点是对每台机器进行物理改装,需要 2-3 小时球道停机。但对于 Brooklyn Bowl 的 12 家保龄球馆网络,这是最优修复。
工程师关键经验
- 别浪费时间绕过商业锁。 如果制造商有意限制访问(如 Brunswick),与其集成遗留系统,不如隔离关键组件。
- 原始传感器数据是你的最佳伙伴。 在没有数字接口的系统中,直接接入模拟传感器往往比解码专有协议更简单。
- 逆向工程需要耐心。 分析电流环流量花了 6 个月,但揭示了用于过滤状态修正的十六进制数据模式。
这个解决方案不完美,但它有效。对于其他拥有类似设备的保龄球馆老板,我们乐于分享经验——联系方式在文末。
— Editorial Team
暂无评论。