1️⃣ Configuración en Windows
-
Instalar Ncat
-
Instala Nmap para usar
ncat. -
Ruta recomendada:
C:\Program Files (x86)\Nmap\ncat.exe. -
Comprobar que desde CMD puedes ejecutar:
"C:\Program Files (x86)\Nmap\ncat.exe" --version
-
-
Scripts de Windows
1.1.
start.bat-
Gestiona cierre de procesos, lanzamiento de RetroBat y monitor, y envía SHUTDOWN al cerrar.
-
Contenido ya funcional que compartiste:
@echo off setlocal enabledelayedexpansion set "MONITOR_BAT=C:\RetroBat\plugins\MarqueeManager\marquee_monitor.bat" set "MONITOR_TITLE=RetroBat_MarqueeMonitor" set "NCAT_EXE=C:\Program Files (x86)\Nmap\ncat.exe" set "RPI_IPS=192.168.1.138 192.168.1.145" set "RPI_PORT=12345" cd /d "%~dp0" :: --- Cerrar procesos previos --- for %%P in ( ESEvents.exe ESEventsScrapTopper.exe ESRetroAchievements.exe VPListenerWS.exe MAMEListenerWS.exe SUPERMODELListenerWS.exe retroarch.exe mpv.exe dmd.exe emulationstation.exe ) do ( tasklist | find /I "%%P" > NUL && taskkill /IM %%P /F ) :: --- Limpiar tmp del MarqueeManager --- rd /s /q ".\.tmp" 2>NUL :: --- Iniciar monitor --- start "%MONITOR_TITLE%" cmd /k ""%MONITOR_BAT%"" :: --- Iniciar ESEvents --- start "" ESEvents.exe timeout /t 1 /nobreak >NUL :: --- Iniciar RetroBat --- start "" ..\..\retrobat.exe timeout /t 2 /nobreak >NUL :: --- Esperar a que RetroBat termine --- :wait_rb tasklist | find /I "retrobat.exe" >NUL if not errorlevel 1 ( timeout /t 2 >NUL goto wait_rb ) tasklist | find /I "emulationstation.exe" >NUL if not errorlevel 1 ( timeout /t 2 >NUL goto wait_rb ) :: --- Cerrar monitor --- taskkill /FI "WINDOWTITLE eq %MONITOR_TITLE%" /F :: --- Enviar SHUTDOWN a RPis --- for %%I in (%RPI_IPS%) do ( echo [%time%] Enviando SHUTDOWN a %%I:%RPI_PORT%... echo SHUTDOWN | "%NCAT_EXE%" %%I %RPI_PORT% -w 1 ) endlocal
1.2.
marquee_monitor.bat-
Recibe eventos de RetroBat (sistema y ROM) y los envía a las RPis.
-
Contenido funcional que compartiste: no hay cambios, se mantiene tal cual.
-
2️⃣ Configuración en la RPi
-
Script
mostrar_rom_ipc.sh-
Ubicación:
/usr/local/bin/mostrar_rom_ipc.sh -
Permisos:
sudo chmod +x /usr/local/bin/mostrar_rom_ipc.sh
-
Contenido funcional que compartiste: mantener tal cual.
-
-
Servicio systemd
-
Crear archivo:
/etc/systemd/system/marquee-mpv.service
[Unit] Description=Marquee MPV IPC Listener After=network.target [Service] Type=simple User=arcade ExecStart=/usr/local/bin/mostrar_rom_ipc.sh Restart=always RestartSec=2 StandardOutput=syslog StandardError=syslog SyslogIdentifier=marquee-mpv [Install] WantedBy=multi-user.target
-
Ajusta
User=arcadesi tu usuario es diferente.
-
-
Habilitar y arrancar el servicio
sudo systemctl daemon-reload sudo systemctl enable marquee-mpv.service sudo systemctl start marquee-mpv.service
-
Comprobar estado:
sudo systemctl status marquee-mpv.service
-
Esto asegura que siempre se levante al iniciar la RPi y esté escuchando los mensajes de Windows.
-
3️⃣ Pruebas
-
Desde Windows, prueba el envío manual:
echo SHUTDOWN | "C:\Program Files (x86)\Nmap\ncat.exe" 192.168.1.138 12345 -w 1
-
La RPi debería apagarse.
-
-
Lanzar
start.baten Windows:-
RetroBat se inicia.
-
Monitor registra los eventos de sistema/ROM y los envía a las RPis.
-
Al cerrar RetroBat, el monitor envía
SHUTDOWNautomáticamente.
-
-
Revisar logs:
-
Windows:
C:\temp\marquee_debug.log -
RPi:
/home/arcade/mostrar_rom_debug.log
-
SrRubio
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.