mirror of
https://github.com/eddyem/mmpp.git
synced 2025-12-06 02:25:15 +03:00
Add readme for mmpp_new & refresh russian documentation
This commit is contained in:
parent
13467035d6
commit
feb6463d8f
Binary file not shown.
@ -185,33 +185,54 @@ Standa,
|
||||
отключения питания эту процедуру проводить не нужно.
|
||||
|
||||
Для удобства управления устройствами MMPP разработана утилита
|
||||
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}
|
||||
\lstref{mmppcontrman}.
|
||||
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}. Краткий
|
||||
перечень параметров утилиты:
|
||||
|
||||
\def\t#1{{\ttfamily #1}}
|
||||
\begin{description}
|
||||
\item[\ttfamily -A, --absmove] --- абсолютное движение, данный параметр используется для задания абсолютной
|
||||
величины количества шагов (аргументы \t{-L} и \t{-l}) или угла в градусной мере (аргументы \t{-R} или
|
||||
\t{-r}), без этого параметра подразумевается задание аргумента относительно текущего положения;
|
||||
\item[\ttfamily E, --reset] --- выполнить программный сброс заданного контроллера, для сброса обоих
|
||||
контроллеров необходимо указать: \t{-E1 -E2};
|
||||
\item[\ttfamily -L, --lin1=arg] --- переместить линейный транслятор поляроида на заданное количество шагов;
|
||||
\item[\ttfamily -R, --rot1=arg] --- повернуть поляроид на заданный угол (в градусной мере);
|
||||
\item[\ttfamily -S, --stop] --- прекратить движение (оба контроллера получают сигнал остановить любое
|
||||
движение);
|
||||
\item[\ttfamily -a, --sendraw=arg] --- отправить неформатированные <<сырые>> данные в порт, например, для
|
||||
передачи команд или получения значений, выходящих за рамки стандартных аргументов утилиты;
|
||||
\item[\ttfamily -b, --baudrate=arg] --- скорость связи (например, 115200), по умолчанию ее значение "--- 9600;
|
||||
\item[\ttfamily -d, --comdev=arg] --- название устройства последовательного порта, \t{/dev/ttyUSB0} по
|
||||
умолчанию;
|
||||
\item[\ttfamily -h, --help] --- отображение справки по параметрам;
|
||||
\item[\ttfamily -l, --lin2=arg] ---переместить линейный транслятор волновой пластины на заданное количество
|
||||
шагов;
|
||||
\item[\ttfamily -p, --pidfile=arg] --- название pid-файла (по умолчанию "--- \t{/tmp/MMPP\_control.pid});
|
||||
\item[\ttfamily -q, --quiet] --- <<тихий>> режим для вызова из внешних программ (на стандартный вывод
|
||||
отображается лишь необходимый минимум информации в виде <<параметр=значение>>, стандартный поток ошибок
|
||||
отображается без изменений);
|
||||
\item[\ttfamily -r, --rot2=arg] --- повернуть волновую пластину на заданный угол (в градусной мере);
|
||||
\item[\ttfamily -s, --status] --- отображение текущего состояния фотометра;
|
||||
\item[\ttfamily -t, --temp] --- отображение примерной температуры обоих микроконтроллеров;
|
||||
\item[\ttfamily -w, --wait] --- ожидание завершения всех движений, заданных в предыдущих запусках утилиты с
|
||||
<<асинхронным>> параметром \t{-y};
|
||||
\item[\ttfamily -y, --async] --- <<асинхронное>> движение: сразу после передачи команды движения утилита
|
||||
завершается, не ожидая окончания движения.
|
||||
\end{description}
|
||||
|
||||
Коды возврата утилиты заданы в начале файла \t{main.c}. Они имеют следующее значение:
|
||||
\begin{description}
|
||||
\item[0, RET\_ALLOK] нормальное завершение работы;
|
||||
\item[1, RET\_NOTFOUND] при запуске утилиты не найдено ни одного отвечающего контроллера, либо не получен
|
||||
ответ от искомого контроллера при передаче команды;
|
||||
\item[2, RET\_ONLYONE] при запуске обнаружен лишь один контроллер;
|
||||
\item[3, RET\_COMMERR] ошибка связи или формата передаваемых \slash принимаемых данных;
|
||||
\item[4, RET\_CANTINIT] невозможно инициализировать контроллер установкой на нулевой концевик;
|
||||
\item[5, RET\_WAITERR] ошибка, возникшая во время ожидания завершения выполнения предыдущих передвижений;
|
||||
\item[9, RET\_ERROR] прочая ошибка (из libsnippets);
|
||||
\item[255, RET\_HELPCALL] запуск утилиты с параметром \t{-h}.
|
||||
\end{description}
|
||||
|
||||
\begin{lstlisting}[caption=Краткая справка по параметрам {\tt MMPP\_control},label=mmppcontrman]
|
||||
-A, --absmove абсолютное движение (без этого флага заданное
|
||||
количество шагов рассматривается как
|
||||
относительное)
|
||||
-L, --lin1=arg перемещение линейного транслятора поляроида на
|
||||
N шагов
|
||||
-R, --rot1=arg вращение поляроида на заданный угол (в градусах)
|
||||
-S, --stop прекратить любое движение
|
||||
-a, --sendraw=arg отправить в порт заданную управляющую
|
||||
последовательность символов напрямую
|
||||
-d, --comdev=arg имя устройства последовательного порта
|
||||
-h, --help отобразить данную справку
|
||||
-l, --lin2=arg перемещение линейного транслятора фазовой
|
||||
пластины на N шагов
|
||||
-q, --quiet не отображать никакой информации в stdout
|
||||
-r, --rot2=arg вращение фазовой пластины на заданный угол
|
||||
(в градусах)
|
||||
-s, --status получение состояния устройства
|
||||
-t, --temp отображение температуры (довольно условной)
|
||||
микроконтроллеров
|
||||
-w, --wait ожидание окончания движения узлов (если
|
||||
предыдущая команда выполнялась с -y)
|
||||
-y, --async не ожидать окончания движения
|
||||
\end{lstlisting}
|
||||
|
||||
\section{Интерфейс системы управления}
|
||||
\comment[Тимур]{конфигурационный файл колес}
|
||||
@ -662,14 +683,14 @@ PF1 & PUPD &
|
||||
|
||||
\subsubsection{Протокол управления}
|
||||
Управление контроллерами производится по шине UART (8N1, скорость задана в конфигурации, по умолчанию
|
||||
115200\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
|
||||
9600\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
|
||||
Микроконтроллер не обрабатывает принимаемые данные до формирования валидной строки. Символы пробела или
|
||||
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (число int32). Данный номер
|
||||
сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь те команды, которые
|
||||
адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса указывается -1).
|
||||
Так как вывод данных микроконтроллером при получении широковещательного идентификатора не блокируется, не
|
||||
рекомендуется использовать широковещательные посылки при наличии более одного устройства на линии связи (кроме
|
||||
посылок экстренного останова, сброса и т.п.).
|
||||
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (16-битное беззнаковое
|
||||
целое). Данный номер сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь
|
||||
те команды, которые адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса
|
||||
указывается -1). Так как вывод данных микроконтроллером при получении широковещательного идентификатора не
|
||||
блокируется, не рекомендуется использовать широковещательные посылки при наличии более одного устройства на
|
||||
линии связи (кроме посылок экстренного останова, сброса и т.п.).
|
||||
|
||||
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
|
||||
валидна, контроллер возвращает строку <<ALLOK>>. Если команда не распознана, возвращается маркер ошибки
|
||||
@ -915,13 +936,39 @@ ESW00 ESW01 ESW10 ESW11 || ESW00 ESW01 ESW10 ESW11
|
||||
\end{description}
|
||||
Значение полей описано в пункте <<Геттеры состояния>> на стр.~\pageref{stategetters}.
|
||||
|
||||
В <<тихом>> режиме, задаваемом флагом \t{-q},состояние устройства отображается как перечень параметров и их
|
||||
значений. Например,
|
||||
\begin{lstlisting}
|
||||
POLMOTOR0=MOVE
|
||||
POLSTEPSLEFT0=742
|
||||
POLPOS0=4558
|
||||
POLESW00=RLSD
|
||||
POLESW01=RLSD
|
||||
POLMOTOR1=MOVE
|
||||
POLSTEPSLEFT1=7289
|
||||
POLPOS1=32411
|
||||
POLESW10=RLSD
|
||||
POLESW11=RLSD
|
||||
L4MOTOR0=MOVE
|
||||
L4STEPSLEFT0=642
|
||||
L4POS0=4358
|
||||
L4ESW00=RLSD
|
||||
L4ESW01=RLSD
|
||||
L4MOTOR1=MOVE
|
||||
L4STEPSLEFT1=1542
|
||||
L4POS1=6458
|
||||
L4ESW10=RLSD
|
||||
L4ESW11=RLSD
|
||||
\end{lstlisting}
|
||||
Т.е. в данном случае просто копируются значения всех переменных, выдаваемых контроллерами по запросу текущего
|
||||
состояния, с добавлением префикса \t{POL} для контроллера поляроида и \t{L4} для контроллера фазовой пластины.
|
||||
|
||||
\paragraph{Базовые настройки.}\label{MMPP_basesettings}
|
||||
Параметры текущей конфигурации контроллера можно получить при помощи геттера конфигурации. Например,
|
||||
\begin{lstlisting}[caption=Базовые настройки контроллеров]
|
||||
MMPP_control -a 1GC
|
||||
./MMPP_control -a 1GC
|
||||
Send raw string: 1GC
|
||||
Receive:
|
||||
CONFSZ=36
|
||||
Receive: CONFSZ=36
|
||||
DEVID=1
|
||||
V12NUM=605
|
||||
V12DEN=94
|
||||
@ -942,10 +989,9 @@ USTEPS=16
|
||||
ACCDECSTEPS=50
|
||||
DATAEND
|
||||
|
||||
MMPP_control -a 2GC
|
||||
./MMPP_control -a 2GC
|
||||
Send raw string: 2GC
|
||||
Receive:
|
||||
CONFSZ=36
|
||||
Receive: CONFSZ=36
|
||||
DEVID=2
|
||||
V12NUM=605
|
||||
V12DEN=94
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
Simple CLI control tool allowing bash scripting
|
||||
===================================
|
||||
===============================================
|
||||
|
||||
|
||||
## Command line arguments
|
||||
|
||||
-A, --absmove absolute move (without this flag moving is relative)
|
||||
-E, --reset reset given mcu (may be included several times)
|
||||
-L, --lin1=arg move polaroid linear stage to N steps
|
||||
-R, --rot1=arg rotate polaroid to given angle
|
||||
-S, --stop stop any moving
|
||||
-a, --sendraw=arg send RAW string to port and read the answer
|
||||
-b, --baudrate=arg TTY baudrate
|
||||
-d, --comdev=arg terminal device filename
|
||||
-h, --help show this help
|
||||
-l, --lin2=arg move waveplate linear stage to N steps
|
||||
-p, --pidfile=arg PID-file name
|
||||
-q, --quiet don't show anything @screen from stdout
|
||||
-r, --rot2=arg rotate lambda/4 to given angle
|
||||
-s, --status get device status
|
||||
-t, --temp show temperature of both MCU
|
||||
-w, --wait wait while all previous moving ends
|
||||
-y, --async asynchronous moving - don't wait
|
||||
- `-A, --absmove`-- absolute moving, use this flag to point that steps amount (parameters of `-L`, `-l`, `-R` or `-r`) are given in absolute position (without this flag steps meaning as relative);
|
||||
- `-E, --reset`--` reset given mcu (may be included several times), each `-Ex` (where `x` is controller ID) will send signal to reset given MCU;
|
||||
- `-L, --lin1=arg`-- move polaroid linear stage to N steps;
|
||||
- `-R, --rot1=arg`-- rotate polaroid to given angle (angle in degrees);
|
||||
- `-S, --stop`-- stop any moving (with this flag each MCU will receive a signal to stop any moving);
|
||||
- `-a, --sendraw=arg`-- send RAW string to port and read the answer, if you want to send something that can't be reached by standard arguments, use this flag;
|
||||
- `-b, --baudrate=arg`-- TTY baudrate (raw number, e.g. 115200), default speed is 9600;
|
||||
- `-d, --comdev=arg`-- terminal device filename, default path is `/dev/ttyUSB0`;
|
||||
- `-h, --help`-- show this help;
|
||||
- `-l, --lin2=arg`-- move waveplate linear stage to N steps
|
||||
- `-p, --pidfile=arg`-- PID-file name
|
||||
- `-q, --quiet`-- don't show anything @screen from stdout
|
||||
- `-r, --rot2=arg`-- rotate lambda/4 to given angle
|
||||
- `-s, --status`-- get device status
|
||||
- `-t, --temp`-- show temperature of both MCU
|
||||
- `-w, --wait`-- wait while all previous moving ends
|
||||
- `-y, --async`-- asynchronous moving - don't wait
|
||||
|
||||
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ static myoption cmdlnopts[] = {
|
||||
{"wait", NO_ARGS, NULL, 'w', arg_none, APTR(&G.waitold), N_("wait while all previous moving ends")},
|
||||
{"async", NO_ARGS, NULL, 'y', arg_none, APTR(&G.dontwait), N_("asynchronous moving - don't wait")},
|
||||
{"lin1", NEED_ARG, NULL, 'L', arg_int, APTR(&G.l1steps), N_("move polaroid linear stage to N steps")},
|
||||
{"lin2", NEED_ARG, NULL, 'l', arg_int, APTR(&G.l2steps), N_("move waveplate linear stage to N steps")},
|
||||
{"lin2", NEED_ARG, NULL, 'l', arg_int, APTR(&G.l2steps), N_("move wave-plate linear stage to N steps")},
|
||||
{"pidfile", NEED_ARG, NULL, 'p', arg_string, APTR(&G.pidfile), N_("PID-file name")},
|
||||
{"stop", NO_ARGS, NULL, 'S', arg_none, APTR(&G.stopall), N_("stop any moving")},
|
||||
end_option
|
||||
|
||||
@ -142,7 +142,10 @@ int main(int argc, char **argv){
|
||||
}
|
||||
|
||||
if(handshake()) signals(RET_NOTFOUND); // test connection & get all positions
|
||||
if(G->waitold) if(tty_wait()) signals(RET_WAITERR);
|
||||
if(G->waitold){
|
||||
if(tty_wait()) signals(RET_WAITERR);
|
||||
handshake();
|
||||
}
|
||||
if(G->showtemp){
|
||||
if(tty_showtemp() != 2) rtn_status = RET_ONLYONE;
|
||||
}
|
||||
|
||||
@ -278,7 +278,7 @@ static void ttystat(){
|
||||
char buff[TBUFLEN+1];
|
||||
if(!quiet) green("Pol: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS || L/4: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS \n");
|
||||
if(alive[1]) chk1 = parsestatus("1GS");
|
||||
MSG(NULL, "Pol: ");
|
||||
if(!quiet) printf("Pol: ");
|
||||
if(chk1 == -1){
|
||||
if(!quiet) printf("%39s", "failed");
|
||||
}else printf("%s", bufo);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user