67 lines
2.7 KiB
Bash
67 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
SERIAL_PORT2="/home/$(whoami)/tty2" # Порт для подключения драйвера клиента
|
||
SERIAL_PORT3="/home/$(whoami)/tty3" # Порт для подключения сервера Modbus Serial (Прибор Щ3)
|
||
UDP_ADDR="localhost"
|
||
UDP_PORT_RX="44100"
|
||
UDP_PORT_TX="48000"
|
||
TEST_STR="${SERIAL_PORT2} ${SERIAL_PORT3} ${UDP_ADDR} ${UDP_PORT_RX} ${UDP_PORT_TX}"
|
||
|
||
PROMPT_COMMAND=
|
||
echo -en "\033]0;Драйвер modbus для проверки\a"
|
||
|
||
cleanup()
|
||
{
|
||
kill "${pid_serial}" >> /dev/null
|
||
}
|
||
|
||
trap cleanup EXIT TERM
|
||
|
||
# /---------------------------------------------------------------------------------\
|
||
# Создать порты, и дождаться их появления.
|
||
# Нужно использовать xterm, т.к. с xfce4-terminal не работает.
|
||
xterm -geometry 120x5 -fa Monospace -fs 12 -hold -T "Последовательные порты" -e "socat -d -d pty,link=${SERIAL_PORT2},rawer,echo=0 pty,link=${SERIAL_PORT3},rawer,echo=0" &
|
||
pid_serial="$!"
|
||
while [ "$(inotifywait -q --format "%f" -e create "${SERIAL_PORT2%/*}")" != "${SERIAL_PORT2##*/}" ]; do ""; done
|
||
# \---------------------------------------------------------------------------------/
|
||
|
||
|
||
# /---------------------------------------------------------------------------------\
|
||
# Проверить, что связь между портами исправна
|
||
exec 4<"${SERIAL_PORT2}"
|
||
exec 5>"${SERIAL_PORT3}"
|
||
echo "${TEST_STR}" >&5
|
||
read -r reply <&4
|
||
exec 4<&-
|
||
exec 5<&-
|
||
if [[ "${reply}" != "${TEST_STR}" ]]; then
|
||
exit 1
|
||
fi
|
||
|
||
exec 4<"${SERIAL_PORT2}"
|
||
exec 5>"${SERIAL_PORT3}"
|
||
echo "${TEST_STR}" >&5
|
||
read -r reply <&4
|
||
exec 4<&-
|
||
exec 5<&-
|
||
if [[ "${reply}" != "${TEST_STR}" ]]; then
|
||
exit 1
|
||
fi
|
||
# \---------------------------------------------------------------------------------/
|
||
|
||
|
||
# /---------------------------------------------------------------------------------\
|
||
# Запустить сервер Modbus Serial (Прибор Щ3)
|
||
xterm -geometry 120x5 -fa Monospace -fs 12 -hold -T "Сервер Modbus Serial Щ3 \"${SERIAL_PORT3}\"" -e "python3 server-rtu.py -serial-port ${SERIAL_PORT3}" &
|
||
# \---------------------------------------------------------------------------------/
|
||
|
||
|
||
# /---------------------------------------------------------------------------------\
|
||
# Запустить драйвер клиента Modbus
|
||
xterm -geometry 120x5 -fa Monospace -fs 12 -hold -T "Драйвер клиента Modbus Serial \"${SERIAL_PORT2} ${UDP_ADDR}:${UDP_PORT_RX}\"" -e "python3 client-serial-tcp.py -serial-port ${SERIAL_PORT2} -udp-addr ${UDP_ADDR} -udp-port-rx ${UDP_PORT_RX} -udp-port-tx ${UDP_PORT_TX}" &
|
||
# \---------------------------------------------------------------------------------/
|
||
|
||
wait ${pid_serial}
|
||
|
||
exit 0
|