| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/bin/bash
- # 本地 PLC 布局切换联调脚本:
- # 1. 启动本地 PLC(S7comm 服务端,plc_server.py)
- # 2. 启动状态切换写入器(plc_sim,每 5 秒写一个状态)
- # Ctrl+C 可完全退出两个服务。
- # 注意:TCP 102 为特权端口,需要 root 运行。
- DIR="$(cd "$(dirname "$0")" && pwd)"
- CONF="${CONF:-${DIR}/channels.conf}"
- PLCPID=""; SIMPID=""
- cleanup() {
- echo ""
- echo "== 正在停止服务 =="
- [ -n "$SIMPID" ] && kill "$SIMPID" 2>/dev/null && wait "$SIMPID" 2>/dev/null
- [ -n "$PLCPID" ] && kill "$PLCPID" 2>/dev/null && wait "$PLCPID" 2>/dev/null
- echo "== 已停止 =="
- }
- trap cleanup INT TERM
- if ! command -v python3 >/dev/null 2>&1; then
- echo "ERROR: python3 not found" >&2
- exit 1
- fi
- for bin in plc_sim rtsp_multi_view; do
- if [ ! -x "${DIR}/build/${bin}" ]; then
- echo "ERROR: ${DIR}/build/${bin} not built" >&2
- exit 1
- fi
- done
- echo "== [1/2] 启动本地 PLC (plc_server.py) =="
- python3 "${DIR}/plc_server.py" -p 102 &
- PLCPID=$!
- echo "== [2/2] 启动状态切换器 (plc_sim, 每 5 秒切换) =="
- "${DIR}/build/plc_sim" -c "$CONF" -t 5000 &
- SIMPID=$!
- wait
|