Управление SR-1640

Взаимодействие с SIM Roulette
Термины и определения
Управляющие команды SIM Roulette SR-1640
СИМ-банки
СИМ-карты
Модемы
Экран
Звук
Двигатели
Сенсоры
Буфер
Настройки
Настройки механики
Мониторинг
Ошибки
Статусы
Примеры
Интеграция SIM Roulette в ваш проект

Варианты взаимодействия с SIM Roulette

1). Прямой ввод команды через терминал WEB-интерфейса SIM Roulette.

2). Формирование через WEB-интерфейс SIM Roulette списков команд (Макросов) и последующее их выполнение устройством.

3). GET или POST запрос к SIM Roulette вида http://XXX.XXX.XXX.XXX/port?data=token||step||command

XXX.XXX.XXX.XXX — IP-адрес SIM Roulette
|| — разделитель
token — кодовое слово заданное через WEB-интерфейс
step — порядковый номер команды (шаг)
command — команда
Пример: http://192.168.1.2/port?data=12345||123||sound:beep
Важно! При GET запросе URL должен быть закодирован на стороне клиента функцией urlencode.

Ответ SIM Roulette возвращает в текстовом виде. Пример: step#!#result
#!# — разделитель
step — ответ на запрос с номером (шаг)
data — результат выполнения команды (для большинства команд 1-удача, NULL-неудача), также, в зависимости от команды, это может быть число либо текст. 0 всегда кодируется как NULL.

4). Обращение SIM Roulette к серверу (вашему WEB-сайту) с GET запросом по указанному в WEB-интерфейсе адресу. Например, http://site.ru/sr/io.php

SIM Roulette передает GET-параметры:
step — ответ на запрос с номером (шаг)
data — результат выполнения команды
и получает с сервера следующую команду в виде текста: {data}step#!#command
Обратите внимание! {data} — необходимый префикс для того, чтобы Sim Roulette понимал что сервер возвращает корректные данные

Частота обращения к серверу регулируется через WEB-интерфейс либо командой connect_interval.

Термины и определения

Ответы SIM Roulette отдает асинхронно.
Каждый ответ содержит номер (шаг) команды.
Ответы модема 0-го картоприемника всегда приходят с нулевым номером.
Буфер ответов SIM Roulette динамический, может содержать результаты десятка команд.
0 всегда кодируется как NULL.
Большинство команд возвращают: 1-удача, NULL-неудача.

Далее по тексту:
D — число
H — шестнадцатеричное число
W — слово
X — числовая либо символьная информация

Управляющие команды SIM Roulette SR-1640

СИМ-БАНКИ

bank_select: D — выбор банка сим-карт
D — диапазон банков 0 – 15 (по часовой стрелке)
Пример: bank_select:0

bank:X — настройка параметров банков сим-карт
X:
? — номер текущего сим-банка (-1 если устройство только стартовало и номер текущего банка не определен)
r — текущая позиция банка (поворот) по оси R / r=D — задать поворот
b — высота картоприемника (если в сим-банке установлен картоприемник)
h — измерить относительную высоту стопы сим-карт в текущем банке
Пример: bank:r=100

СИМ-КАРТЫ

card_get — забор карты сверху стопы в текущем банке
см. СТАТУСЫ, ОШИБКИ

card_put — выброс карты наверх стопы в текущем банке
см. СТАТУСЫ, ОШИБКИ

card_out — выброс карты через выходное отверстие

card_insert(:D) — вставка карты в картоприемник
D — номер сим-банка с установленным картоприемником (для 0-го банка номер можно не указывать)
Примеры:
card_insert card_insert:2

card_retract(:D) — извлечение карты из картоприемника с предварительным опусканием контактов SIM-карты (для 0-го банка номер можно не указывать)
Примеры:
card_retract
card_retract:4

МОДЕМ

modem[D]:rate — скорость передачи данных в модем (D – номер банка , кроме 0) / modem_rate=D — задать скорость

modem[D]:name — имя картоприемника (D – номер банка , кроме 0) / modem[D]:name=W — ввести 4х символьное имя ранее прилинкованного картоприемника (link:BRCST>id)

modem[D]:ping — PING картоприемника (D – номер банка , кроме 0), в ответ должно вернуться "pong", допустИм запрос ping:w

modem[D]:step — количество шагов привода картоприемника необходимое для поднятия/опускания контактов / modem[D]:step=D — задать количество шагов

modem:on — включить модем
(для картоприемника отличного от 0-го надо указать номер банка. Пример: modem[2]:on)

modem:off — выключить модем
(для картоприемника отличного от 0-го надо указать номер банка. Пример: modem[2]:off)

modem:up — поднять (подключить) контакты SIM-карты
(для картоприемника отличного от 0-го надо указать номер банка. Пример: modem[2]:up)

modem:down — опустить (отключить) контакты SIM-карты
(для картоприемника отличного от 0-го надо указать номер банка. Пример: modem[2]:down)

modem:write=AT… — подать команду модему (таким образом модему передаются стандартные AT-команды)
(для картоприемника отличного от 0-го надо указать номер банка. Пример: modem[2]:write=AT)
Пример: modem:ATD*110*10# (получить SMS с номером телефона SIM-карты у Билайна)

modem[D]:read — ответа модема (D – номер банка) (для 0-го картоприемника команда не нужна, все данные полученные от модема сразу же возвращаются со step=0)

УПРАВЛЕНИЕ ДВИГАТЕЛЯМИ

drv_move:yX — управление двигателем Y (вертикальное перемещение каретки)
X — диапазон -20000 — 20000 (перемещение вверх/вниз, самая нижняя позиция = 0)
или >fix — зафиксировать ось двигателя
или >nofix — отключить фиксацию оси двигателя
Примеры:
drv_move:y-1000
drv_move:y>fix

drv_move:rX — управление двигателем R (радиальное перемещение каретки)
X — диапазон -1000 — 1000 (перемещение вперед/назад)
>fix — зафиксировать ось двигателя
>nofix — отключить фиксацию оси двигателя
Пример: drv_move:100

drv_move:xD — управление двигателем X (перемещение карты на каретке)
D — 1 из каретки / -1 в каретку / 0 остановить
Пример: drv_move:x-1

drv_move:mD — управление магнитом на каретке
D — 1 включить / 0 остановить
Пример: drv_move:0

НАСТРОЙКИ МЕХАНИКИ

drv_y:X — настройка параметров двигателя Y (вертикальное перемещение каретки)
X:
p — текущая позиция / p=1 — задать текущую позицию
re — текущий статус реверса / re=1 — включить реверс / re=0 — выключить реверс
sd — скорость при движении вниз / sd=D — задать скорость
su — скорость при движении вверх / su=D — задать скорость
up — отступ от датчика до верха стопы при движении вверх / up=D — задать отступ
dw — отступ от датчика до верха стопы при движении вниз / dw=D — задать отступ
to — подъем над стопой при выбросе карты (card_put) / to=D — задать подъем
ho — низ стопы карт (ниже этой высоты датчик не видит карт) / ho=D — задать низ
w — высота рабочего положения / w=D — задать высоту
e — высота отверстия для выброса карты / e=D — задать высоту
m — максимальная высота подъема / to=D — задать высоту
t — допуск движения по оси Y с незафиксированной картой / t=D — задать допуск
r — сдвиг по оси Y при повторной попытке забрать карту (card_get) / r=D — задать сдвиг
f — временная задержка в миллисекундах для фиксации оси Y при обращении к соответствующему двигателю / f=D — задать задержку
Примеры:
drv_y:to
drv_y:to=1000

drv_r:X — настройка параметров двигателя R (радиальное перемещение каретки)
X:
p — текущая позиция / p=1 — задать текущую позицию
re — текущий статус реверса / re=1 — включить реверс / re=0 — выключить реверс
sh — высокая скорость / sh=D — задать скорость
sl — низкая скорость / sl=D — задать скорость
or — сдвиг вправо при позиционировании над датчиком 0 / or=D — задать сдвиг
ol — сдвиг влево при позиционировании над датчиком 0 / ol=D — задать сдвиг
o — cдвиг при возврате каретки к датчику 0 / o=D — задать сдвиг
r — максимальный поворот / r=D — задать сдвиг
f — временная задержка в миллисекундах для фиксации радиального движения при обращении к двигателю R / f=D — задать задержку
Пример: drv_r:f=5000

drv_x:X — получение параметров двигателя X (перемещение карты на каретке)
X:
re — текущий статус реверса / re=1 — включить реверс / re=0 — выключить реверс
g — получить текущий статус (0 / 1 / -1 см. drv_move:x)
f — время одной итерации при движении вперед / f=D — задать время
b — время одной итерации при обратном ходе (аналог ABS на автомобиле, помогает при проскальзывании) / b=D — задать время
i — количество попыток установки карты в картоприемник / выброса карты (card_insert / card_put) / i=D — задать время
r — количество попыток забора карты из картоприемника / банка (card_retract / card_get) / r=D — задать время
s — амплитуда раскачки при вставке и заборе карты / s=D — задать амплитуду
Пример: drv _x:s

drv_m — получение статуса магнита на каретке (0 / 1 см. drv_move:m)
Пример: drv_m

СЕНСОРЫ

sensor: W — получение параметров сенсоров
W:
y1 — нижний сенсор двигателя Y (вертикальное перемещение каретки)
y2 — сенсор фиксирующий верхний край стопы карт
r1 — сенсор двигателя R (радиальное перемещение каретки)
x1 — сенсор фиксации двигателя X на каретке
x2 — сенсор фиксации карты на каретке
x3 — сенсор забора карты на каретке
Пример: sensor:y1

ЭКРАН

lcd_mode:X
X:
c — очистить экран
1 — включить подсветку
0 — выключить подсветку
Пример: lcd_mode:c

lcd_msg:W — вывод на экран текста до 32 символов
W:
[текст]
Пример: lcd_msg:My text

lcd_txt:W — вывод на экран текста произвольной длины (только латиница)
W:
[текст]
Пример: lcd_txt:My text

ЗВУК

sound:beep — короткий отрывистый звук

sound:error — продолжительный звук

sound:alarm — фрагмент «Имперского марша» из к/ф «Star Wars»

БУФЕР

buffer_client:clear — очистка буфера результатов выполнения команд SIM Roulette

НАСТРОЙКИ

carrier_time — время (в секундах) простоя SIM Roulette между командами, по окончании времени SIM Roulette заново подключается к сети / carrier_time=D — задать время
Пример: carrier_time=60

connect_interval — время (в миллисекундах) между запросами к удаленному серверу / connect_interval=D — установка времени
Пример: connect_interval=1000

error — код ошибки (см. card_get, card_put)

report — статус выполнения команды (см. card_get, card_put)

version — версия ПО сопроцессора механики

main_rate — скорость соединения процессора-сопроцессора механики со стороны процессора / mate_rate=D — задать скорость

mate_rate — скорость соединения процессора-сопроцессора механики со стороны сопроцессора / mate_rate=D — задать скорость

answer — формат ответа / answer=D — задать формат:
0 — NULL/1(TRUE/FALSE)
1 — 0/1(TRUE/FALSE)
2 — эхо введенных данных

debug=D включить(1) / выключить(0) дебагер

load_default — загрузить заводские настройки механики

reset — Soft reset механики

restart:W — перезагрузка
W:
main — Soft-reset главного процессора
mate — Hard-eset сопроцессора механики
Пример: restart:main

carrier_time — таймер ожидания связи c хостом (по истечении происходит переподключение к Интернет) / carrier_time=D — задать время

port_rate — скорость передачи интерфейса RS-485 / port_rate=D — задать скорость

МОНИТОРИНГ

request — команда для получения ответа (результата выполнения предыдущих команд) от устройства (команда никаких действий не производит)

ОШИБКИ

При получении NULL в ряде случаев можно запросить дополнительную информацию об ошибке (команда error):

Ошибки при заборе карты (см. card_get)
201 — на момент выполнения команды карта на каретке не полностью
202 — в результате выполнения команды карта на каретке не полностью
203 — в результате выполнения команды механизм не убран на каретку, дальнейшее движение каретки в любом направлении невозможно
204 — карта не взята, каретка свободна

Ошибки при выбросе карты (см. card_put)
301 — не удалось отпозиционировать каретку по верху стопы
302 — карту не удалось выбросить

СТАТУСЫ

При успешном выполнении некоторых команд можно запросить подробности (команда report):

Статусы при заборе карты (см. card_get)
201 — на момент выполнения команды карта уже взята
202 — забор карты прошел в штатном режиме
203 — карта взята, но понадобилась дополнительная попытка
204 — карта взята, но понадобилось две дополнительные попытки (рекомендуется проверить настройки и при необходимости произвести калибровку движения каретки по вертикальной оси)
205 — карта взята, но возникли некие сложности при заборе (рекомендуется визуально проконтроллировать процесс забора карты)

Статусы при выбросе карты (см. card_put)
301 — на момент выполнения команды карта каретка уже пуста
302 — выброс карты прошел в штатном режиме
303 — карта выброшена, но понадобился дополнительный поворот каретки по часовой стрелке
304 — карта выброшена, но понадобился дополнительный поворот каретки против часовой стрелки (рекомендуется проверить настройки и при необходимости произвести калибровку движения каретки по горизонтальной оси)
305 — карта выброшена, но понадобилось два дополнительный поворота каретки против часовой стрелки

Примеры

Мы приготовили для вас несколько примеров реализации внешнего управления SIM Roulette. Код (PHP) снабжен подробными комментариями. Скачать примеры можно в разделе Download.

Интеграция SIM Roulette в ваш проект

Представленной выше информации достаточно для того, чтобы программист средней квалификации смог без проблем интегрировать SIM Roulette в ваш проект.
В случае необходимости внедрения SR в существующий проект или создания системы с нуля, вы всегда можете воспользоваться услугами наших программистов.