Files
uarep-ctl/modbus/start-driver.sh

67 lines
2.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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