Свободный режим (Free Mode)


Свободным режимом называют обычный режим счетчика ST.

st_set_free

В совободном режиме доступны следующие функции pid_ioctl:

Команда Подкоманда Описание
set mode free set mode: free mode
div sec set unit: second
ms set unit: millisecond
us set unit: microsecond
dir up set counter direction: up counter
down set counter direction: down counter
count [T] set the starting count value in down counter mode
reset - reset
get count get count value
state get current state
start - start
stop - stop

Настройка управления счетчиком

ST может использоваться как счетчик вверх, так и вниз. Значение по умолчанию для этого элемента - счетчик вверх.

Описание Синтаксис
up counter pid_ioctl($pid, "set dir up");
down counter pid_ioctl($pid, "set dir down");

Установка счетчика

Когда счетчик ST в режиме вниз, то можно установить начальное значение счетчика.
Ниже показано, как установить значение счетчика:

Команда Синтаксис
set count pid_ioctl($pid, "set count T");

Обратите внимание, что счетчик всегда начинается с 0, и на команду "set count" не влияет. Допустимые диапазоны для T в нижнем счетчике следующие:

Юнит Действительный диапазон для T
Микросекунда 0 ~ (263 - 1)
Миллисекунда 0 ~ (263 - 1) / 1,000
Секунда 0 ~ (263 - 1) / 1,000,000

Получение значения счетчика

Команда "get count" возвращает текущее значение счетчика.

Команда Синтаксис
get count pid_ioctl($pid, "get count");

Примеры свободного режима

Команда "get count" позволяет получить текущее значение счетчика ST.

$tick = pid_ioctl($pid, "get count");

Пример счетчика вверх

Данный пример ST показывает установку счетчика вверх и выводит значение счетчика каждую секунду.

$pid = pid_open("/mmap/st0");               // open ST 0
pid_ioctl($pid, "set mode free");           // set mode: free
pid_ioctl($pid, "set div sec");             // set unit: second
pid_ioctl($pid, "set dir up");              // set direction: up counter
pid_ioctl($pid, "start");                   // start ST
for($i=0; $i<10; $i++)
{
    $value = pid_ioctl($pid, "get count");  // read the count value
    echo "$value\r\n";                      // print the count value
    sleep(1);
}
pid_close($pid);

Пример счетчика вниз

В данном примере ST устанавливает счетчик вниз с начальным значением счета и выводит значение счетчика каждую секунду.

$pid = pid_open("/mmap/st0");               // open ST 0
pid_ioctl($pid, "set mode free");           // set mode: free
pid_ioctl($pid, "set div sec");             // set unit: second
pid_ioctl($pid, "set dir down");            // set direction: down counter
pid_ioctl($pid, "set count 10");            // set count value: 10
pid_ioctl($pid, "start");                   // start ST
for($i = 0; $i < 10; $i++)
{
    $value = pid_ioctl($pid, "get count");  // read the count value
    echo "$value\r\n";                      // print the count value
    sleep(1);
}
pid_close($pid);