mirror of
https://github.com/eddyem/mmpp.git
synced 2026-02-01 04:45:04 +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 разработана утилита
|
Для удобства управления устройствами MMPP разработана утилита
|
||||||
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}
|
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}. Краткий
|
||||||
\lstref{mmppcontrman}.
|
перечень параметров утилиты:
|
||||||
|
|
||||||
|
\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{Интерфейс системы управления}
|
\section{Интерфейс системы управления}
|
||||||
\comment[Тимур]{конфигурационный файл колес}
|
\comment[Тимур]{конфигурационный файл колес}
|
||||||
@ -662,14 +683,14 @@ PF1 & PUPD &
|
|||||||
|
|
||||||
\subsubsection{Протокол управления}
|
\subsubsection{Протокол управления}
|
||||||
Управление контроллерами производится по шине UART (8N1, скорость задана в конфигурации, по умолчанию
|
Управление контроллерами производится по шине UART (8N1, скорость задана в конфигурации, по умолчанию
|
||||||
115200\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
|
9600\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
|
||||||
Микроконтроллер не обрабатывает принимаемые данные до формирования валидной строки. Символы пробела или
|
Микроконтроллер не обрабатывает принимаемые данные до формирования валидной строки. Символы пробела или
|
||||||
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (число int32). Данный номер
|
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (16-битное беззнаковое
|
||||||
сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь те команды, которые
|
целое). Данный номер сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь
|
||||||
адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса указывается -1).
|
те команды, которые адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса
|
||||||
Так как вывод данных микроконтроллером при получении широковещательного идентификатора не блокируется, не
|
указывается -1). Так как вывод данных микроконтроллером при получении широковещательного идентификатора не
|
||||||
рекомендуется использовать широковещательные посылки при наличии более одного устройства на линии связи (кроме
|
блокируется, не рекомендуется использовать широковещательные посылки при наличии более одного устройства на
|
||||||
посылок экстренного останова, сброса и т.п.).
|
линии связи (кроме посылок экстренного останова, сброса и т.п.).
|
||||||
|
|
||||||
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
|
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
|
||||||
валидна, контроллер возвращает строку <<ALLOK>>. Если команда не распознана, возвращается маркер ошибки
|
валидна, контроллер возвращает строку <<ALLOK>>. Если команда не распознана, возвращается маркер ошибки
|
||||||
@ -915,13 +936,39 @@ ESW00 ESW01 ESW10 ESW11 || ESW00 ESW01 ESW10 ESW11
|
|||||||
\end{description}
|
\end{description}
|
||||||
Значение полей описано в пункте <<Геттеры состояния>> на стр.~\pageref{stategetters}.
|
Значение полей описано в пункте <<Геттеры состояния>> на стр.~\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}
|
\paragraph{Базовые настройки.}\label{MMPP_basesettings}
|
||||||
Параметры текущей конфигурации контроллера можно получить при помощи геттера конфигурации. Например,
|
Параметры текущей конфигурации контроллера можно получить при помощи геттера конфигурации. Например,
|
||||||
\begin{lstlisting}[caption=Базовые настройки контроллеров]
|
\begin{lstlisting}[caption=Базовые настройки контроллеров]
|
||||||
MMPP_control -a 1GC
|
./MMPP_control -a 1GC
|
||||||
Send raw string: 1GC
|
Send raw string: 1GC
|
||||||
Receive:
|
Receive: CONFSZ=36
|
||||||
CONFSZ=36
|
|
||||||
DEVID=1
|
DEVID=1
|
||||||
V12NUM=605
|
V12NUM=605
|
||||||
V12DEN=94
|
V12DEN=94
|
||||||
@ -942,10 +989,9 @@ USTEPS=16
|
|||||||
ACCDECSTEPS=50
|
ACCDECSTEPS=50
|
||||||
DATAEND
|
DATAEND
|
||||||
|
|
||||||
MMPP_control -a 2GC
|
./MMPP_control -a 2GC
|
||||||
Send raw string: 2GC
|
Send raw string: 2GC
|
||||||
Receive:
|
Receive: CONFSZ=36
|
||||||
CONFSZ=36
|
|
||||||
DEVID=2
|
DEVID=2
|
||||||
V12NUM=605
|
V12NUM=605
|
||||||
V12DEN=94
|
V12DEN=94
|
||||||
|
|||||||
@ -1,26 +1,26 @@
|
|||||||
Simple CLI control tool allowing bash scripting
|
Simple CLI control tool allowing bash scripting
|
||||||
===================================
|
===============================================
|
||||||
|
|
||||||
|
|
||||||
## Command line arguments
|
## Command line arguments
|
||||||
|
|
||||||
-A, --absmove absolute move (without this flag moving is relative)
|
- `-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)
|
- `-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
|
- `-L, --lin1=arg`-- move polaroid linear stage to N steps;
|
||||||
-R, --rot1=arg rotate polaroid to given angle
|
- `-R, --rot1=arg`-- rotate polaroid to given angle (angle in degrees);
|
||||||
-S, --stop stop any moving
|
- `-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
|
- `-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
|
- `-b, --baudrate=arg`-- TTY baudrate (raw number, e.g. 115200), default speed is 9600;
|
||||||
-d, --comdev=arg terminal device filename
|
- `-d, --comdev=arg`-- terminal device filename, default path is `/dev/ttyUSB0`;
|
||||||
-h, --help show this help
|
- `-h, --help`-- show this help;
|
||||||
-l, --lin2=arg move waveplate linear stage to N steps
|
- `-l, --lin2=arg`-- move waveplate linear stage to N steps
|
||||||
-p, --pidfile=arg PID-file name
|
- `-p, --pidfile=arg`-- PID-file name
|
||||||
-q, --quiet don't show anything @screen from stdout
|
- `-q, --quiet`-- don't show anything @screen from stdout
|
||||||
-r, --rot2=arg rotate lambda/4 to given angle
|
- `-r, --rot2=arg`-- rotate lambda/4 to given angle
|
||||||
-s, --status get device status
|
- `-s, --status`-- get device status
|
||||||
-t, --temp show temperature of both MCU
|
- `-t, --temp`-- show temperature of both MCU
|
||||||
-w, --wait wait while all previous moving ends
|
- `-w, --wait`-- wait while all previous moving ends
|
||||||
-y, --async asynchronous moving - don't wait
|
- `-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")},
|
{"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")},
|
{"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")},
|
{"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")},
|
{"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")},
|
{"stop", NO_ARGS, NULL, 'S', arg_none, APTR(&G.stopall), N_("stop any moving")},
|
||||||
end_option
|
end_option
|
||||||
|
|||||||
@ -142,7 +142,10 @@ int main(int argc, char **argv){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(handshake()) signals(RET_NOTFOUND); // test connection & get all positions
|
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(G->showtemp){
|
||||||
if(tty_showtemp() != 2) rtn_status = RET_ONLYONE;
|
if(tty_showtemp() != 2) rtn_status = RET_ONLYONE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -278,7 +278,7 @@ static void ttystat(){
|
|||||||
char buff[TBUFLEN+1];
|
char buff[TBUFLEN+1];
|
||||||
if(!quiet) green("Pol: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS || L/4: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS \n");
|
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");
|
if(alive[1]) chk1 = parsestatus("1GS");
|
||||||
MSG(NULL, "Pol: ");
|
if(!quiet) printf("Pol: ");
|
||||||
if(chk1 == -1){
|
if(chk1 == -1){
|
||||||
if(!quiet) printf("%39s", "failed");
|
if(!quiet) printf("%39s", "failed");
|
||||||
}else printf("%s", bufo);
|
}else printf("%s", bufo);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user