如何用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,同时软件端的串口参数要和代码完全匹配。
第三步:测试验证
- 先启动密室软件,确保外部消息触发器已经启用
- 在Pi上运行对应的Python脚本
- 检查软件是否自动弹出
Hello World文本
如果没触发,先排查这几点:
- 网络类(TCP/UDP):Pi能不能ping通服务器IP,端口是否被防火墙拦截
- 串口类:设备路径是否正确,波特率、奇偶校验等参数是否和软件一致
- 消息内容:软件里的触发字符串和Pi发送的是否完全匹配(大小写、空格都不能错)
内容的提问来源于stack exchange,提问作者user3060040
相关产品推荐
相关产品推荐

