mirror of
https://github.com/modelec/Initialisation.git
synced 2026-01-18 15:57:20 +01:00
gc wireless
This commit is contained in:
@@ -41,7 +41,7 @@ sleep 1
|
||||
# Démarrer le programme d'interconnexion raspi -> arduino
|
||||
echo "Starting the interconnection program"
|
||||
rm /home/modelec/Serge/Logs/connectos.log
|
||||
screen -L -Logfile /home/modelec/Serge/Logs/connectos.log -dmS connectors /home/modelec/Serge/connectors/build/connectors --port "$port"
|
||||
screen -L -Logfile /home/modelec/Serge/Logs/connectos.log -dmS connectors /home/modelec/Serge/connectors/build/connectors --port "$port"s
|
||||
pid=$(screen -ls | grep -o '[0-9]*\.connectors' | grep -o '[0-9]*')
|
||||
echo "Interconnection pid" $pid > /home/modelec/Serge/Interconnection_pid.txt
|
||||
pids+=($pid)
|
||||
|
||||
96
gc_wireless_startup.sh
Normal file
96
gc_wireless_startup.sh
Normal file
@@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
# Bash script for start up all the programs for SERGE
|
||||
# All programs are started in the background and in parallel
|
||||
# All the programs are called with their needed arguments
|
||||
# Author: Félix MARQUET
|
||||
|
||||
# Stocker les PIDs des programmes en arrière-plan dans une array
|
||||
pids=()
|
||||
pidserver=()
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
port=8080
|
||||
else
|
||||
port="$1"
|
||||
fi
|
||||
|
||||
# Démarrer le serveur TCP
|
||||
echo "Starting the TCP server GC"
|
||||
/home/modelec/Serge/TCPSocketServerGC/build/socketServer --port "$port" &
|
||||
echo "TCP server pid" $! > /home/modelec/Serge/TCP_GC_pid.txt
|
||||
pidserver+=($!)
|
||||
sleep 1
|
||||
|
||||
# Démarrer le Lidar
|
||||
echo "Starting the Lidar"
|
||||
rm /home/modelec/Serge/Logs/lidar.log
|
||||
screen -L -Logfile /home/modelec/Serge/Logs/lidar.log -dmS lidar /home/modelec/Serge/detection_adversaire/build/lidar --port "$port"
|
||||
pidLidar=$(screen -ls | grep -o '[0-9]*\.lidar' | grep -o '[0-9]*')
|
||||
echo "Lidar pid" $pidLidar > /home/modelec/Serge/Lidar_pid.txt
|
||||
pids+=($pidLidar)
|
||||
sleep 1
|
||||
|
||||
# Démarrer l'IHM
|
||||
echo "Starting the IHM"
|
||||
rm /home/modelec/Serge/Logs/ihm_robot.log
|
||||
/home/modelec/Serge/ihm/build/ihm_robot --window-mode fullscreen --port "$port" > /home/modelec/Serge/Logs/ihm_robot.log &
|
||||
echo "IHM pid" $! > /home/modelec/Serge/IHM_pid.txt
|
||||
pids+=($!)
|
||||
sleep 1
|
||||
|
||||
# Démarrer le programme d'interconnexion raspi -> arduino
|
||||
echo "Starting the interconnection program"
|
||||
rm /home/modelec/Serge/Logs/connectos.log
|
||||
screen -L -Logfile /home/modelec/Serge/Logs/connectos.log -dmS connectors /home/modelec/Serge/connectors/build/connectors --port "$port"s
|
||||
pid=$(screen -ls | grep -o '[0-9]*\.connectors' | grep -o '[0-9]*')
|
||||
echo "Interconnection pid" $pid > /home/modelec/Serge/Interconnection_pid.txt
|
||||
pids+=($pid)
|
||||
sleep 1
|
||||
|
||||
# Démarrer le programme de contrôle des servomoteurs
|
||||
echo "Starting the servomotor control program"
|
||||
rm /home/modelec/Serge/Logs/servo_motor.log
|
||||
screen -L -Logfile /home/modelec/Serge/Logs/servo_motor.log -dmS servo_motor /home/modelec/Serge/servo_moteurs/build/servo_motor --port "$port"
|
||||
pid=$(screen -ls | grep -o '[0-9]*\.servo_motor' | grep -o '[0-9]*')
|
||||
echo "Servomotor pid" $pid > /home/modelec/Serge/Servomotor_pid.txt
|
||||
pids+=($pid)
|
||||
sleep 1
|
||||
|
||||
echo "Starting the client logger program"
|
||||
rm /home/modelec/Serge/Logs/client.log
|
||||
echo "$(date +'%Y-%m-%d %H:%M:%S') - Starting the client logger program" >> /home/modelec/Serge/Logs/client.log
|
||||
/home/modelec/Serge/cpp-lib/example/build/client --port "$port" --logger >> /home/modelec/Serge/Logs/client.log 2>&1 &
|
||||
echo "Client Logger pid" $! > /home/modelec/Serge/client_pid.txt
|
||||
pids+=($!)
|
||||
sleep 1
|
||||
|
||||
# Fonction pour surveiller la fermeture de l'IHM
|
||||
monitor_all() {
|
||||
while true; do
|
||||
# Attendre que un des programmes se termine
|
||||
for pid in "${pids[@]}"; do
|
||||
if ! kill -0 $pid 2>/dev/null; then
|
||||
echo "Program with PID $pid has terminated, stopping other programs"
|
||||
for other_pid in "${pids[@]}"; do
|
||||
if [ "$other_pid" != "$pid" ]; then
|
||||
kill -SIGINT $other_pid 2>/dev/null
|
||||
fi
|
||||
done
|
||||
echo "Stopping the TCP server"
|
||||
for server_pid in "${pidserver[@]}"; do
|
||||
kill -SIGKILL $server_pid 2>/dev/null
|
||||
done
|
||||
return
|
||||
fi
|
||||
done
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
# Démarrer la fonction de surveillance en arrière-plan
|
||||
monitor_all &
|
||||
|
||||
# Attendre que tous les programmes se terminent
|
||||
wait
|
||||
|
||||
screen -wipe
|
||||
Reference in New Issue
Block a user