You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从Raspberry Pi向密室逃脱软件服务器发送命令?

实现Raspberry Pi向密室逃脱软件发送信号以显示"Hello World"

Got it, let's walk through this proof of concept step by step—even with that rough-around-the-edges escape room builder, we can get this working reliably.

第一步:在密室逃脱软件中配置触发规则

首先得让软件知道要监听什么信号,以及收到信号后该做什么。根据你提到的软件手册:

外部设备的传入消息 若您从其他设备(TCP、UDP、Serial)发送消息……

具体配置步骤:

  • 打开软件的「外部设备」或「触发器」设置面板
  • 添加一个新的传入消息触发器,选择你想用的通信方式(推荐TCP,局域网里稳定性最好)
  • 设置触发条件:比如当收到字符串pi_trigger时,执行「显示文本」动作,内容填Hello World
  • 记好你设置的监听端口(比如12345),后面Pi的代码要用到

第二步:在Raspberry Pi上编写发送信号的代码

Pi默认自带Python,用它来写发送逻辑最方便,下面给你三种通信方式的实现,选适合你的场景就行:

选项1:TCP通信(推荐局域网场景)

TCP是可靠的连接型通信,适合密室这种需要稳定触发的场景:

import socket

# 替换成运行密室软件的服务器IP和你设置的监听端口
SERVER_IP = "192.168.1.100"
SERVER_PORT = 12345

def send_tcp_trigger(message):
    try:
        # 创建TCP连接并发送消息
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.connect((SERVER_IP, SERVER_PORT))
            s.sendall(message.encode('utf-8'))
            print(f"信号已发送: {message}")
    except Exception as e:
        print(f"发送失败,错误信息: {e}")

# 调用函数发送触发信号
send_tcp_trigger("pi_trigger")

运行前确保Pi和服务器在同一局域网,且软件的TCP监听端口和代码里的SERVER_PORT完全一致。

选项2:UDP通信(无需连接,快速触发)

UDP是无连接的,适合只需要单次触发的简单场景:

import socket

SERVER_IP = "192.168.1.100"
SERVER_PORT = 12345

def send_udp_trigger(message):
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
            s.sendto(message.encode('utf-8'), (SERVER_IP, SERVER_PORT))
            print(f"UDP信号已发送: {message}")
    except Exception as e:
        print(f"发送失败,错误信息: {e}")

send_udp_trigger("pi_trigger")

同样要在软件里配置UDP监听对应的端口,触发字符串和代码里的保持一致。

选项3:串口通信(物理线连接场景)

如果你的Pi和运行软件的电脑用USB转串口线直接连接,可以用这种方式:

import serial
import time

# 替换成你的串口设备路径(比如/dev/ttyUSB0)和波特率(要和软件设置匹配)
SERIAL_PORT = "/dev/ttyUSB0"
BAUD_RATE = 9600

def send_serial_trigger(message):
    try:
        ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)
        time.sleep(2)  # 等待串口初始化完成
        ser.write(message.encode('utf-8'))
        ser.close()
        print(f"串口信号已发送: {message}")
    except Exception as e:
        print(f"发送失败,错误信息: {e}")

send_serial_trigger("pi_trigger")

注意先在Pi上安装串口库:pip install pyserial,同时软件端的串口参数要和代码完全匹配。

第三步:测试验证

  1. 先启动密室软件,确保外部消息触发器已经启用
  2. 在Pi上运行对应的Python脚本
  3. 检查软件是否自动弹出Hello World文本

如果没触发,先排查这几点:

  • 网络类(TCP/UDP):Pi能不能ping通服务器IP,端口是否被防火墙拦截
  • 串口类:设备路径是否正确,波特率、奇偶校验等参数是否和软件一致
  • 消息内容:软件里的触发字符串和Pi发送的是否完全匹配(大小写、空格都不能错)

内容的提问来源于stack exchange,提问作者user3060040

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:02:58