Свободным режимом называют обычный режим счетчика ST.
В совободном режиме доступны следующие функции 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);