halcmd sets HighGearRequest 1 - устанавливает сигнал HighGearRequest в 1. По логике этот сигнал - запрос на высокую передачу
~/emc2/nc_files/waitfor HighClutch TRUE - запускаем программу ~/emc2/nc_files/waitfor "~" - домашний директорий пользователя с двумя параметрами HighClutch TRUE - по логике названия ждем пока HighClutch станет TRUE
halcmd sets HighGearRequest 0 по окончанию программы выставляем значение сигнала в 0.
~/emc2/nc_files/waitfor:
#!/bin/bash - эта программа на bash - примерно тоже самое, что и sh.
Я не очень разбираюсь в языке shell, буду писать как считаю
if [ $# != 2 ]; then --- если количество параметров не равно 2 пишем как надо использовать программу и выходим.
echo usage: $0 SignalName DesiredValue
exit 1
fi
signal=$1 - назначаем переменные из параметров коммандной строки
value=$2
while :; do ---- начало цикла причем условие цикла всегда = true поэтому это "бесконечный цикл"
set -- $(halcmd -s show sig $signal) --- выполняем команду показать состояние сигнала $signal и куда-то записываем ...
if [ x"$2" == x"$value" ]; then ------ если это значение равно $value - мы дождались нужного состояния - exit 0 выходим из программы и цикл завершается
exit 0
fi -- конец if
sleep 1 -- ждем 1 сек, или милисек, в общем ждем
done -- конец цикла
Вообще тоже самое можно провернуть через digital-in и M66. Будет просто и сердито
