Разделитель интервала кадров


Командой для установки разделителя интервала кадров является ifd. При получении данных PES-2406 выделяет кадры с назначенным разделителем этой команды. В это время вы можете проверить длину кадра при помощи команды "get rxlen" и получить данные в еденицах кадра.

Установка разделителя межфазных границ

Если вы установите два разделителя кадров, данные от первого разделителя ко второму станут одним кадром. Оба разделителя и данные между разделителями действительны, но остальные данные игнорируются. Общая длина двух разделителей кадров не может превышать 64 байта.

Снятие разделителя между кадрами

Вы можете отключить разделитель межкадрового интервала следующим образом:

"set ifd"

Если вы не укажете что-либо после команды ifd, как указано выше, то разделитель кадра не будет установлен.

<?php
include "lib/sd_spc.php";

$sid = 14;

spc_reset();
spc_sync_baud(115200);

spc_request_dev($sid, "set uart 115200");

spc_request_dev($sid, "set ifd 1b01");
echo spc_request_dev($sid, "get ifd"), "\r\n";  // output: 1b01

spc_request_dev($sid, "set ifd 1b02 1b03");
echo spc_request_dev($sid, "get ifd"), "\r\n";  // output: 1b02 1b03

spc_request_dev($sid, "set ifd");
echo spc_request_dev($sid, "get ifd"), "\r\n";  // output:
?>

В качестве разделителя для приема данных по кадру за кадром и отправки данных обратно в данном примере используется 0x0d.

<?php
include "/lib/sd_spc.php";

$rwbuf = "";
$sid = 14;
spc_reset();
spc_sync_baud(115200);

spc_request_dev($sid, "set uart 115200N81");
spc_request_dev($sid, "set ifd 0d");

while(1)
{
    $txfree = (int)spc_request_dev($sid, "get txfree");
    $rlen = (int)spc_request_dev($sid, "get rxlen");
    if($rlen > 0)
    {
        if($rlen <= $txfree)
        {
            // receive data
            $rwbuf = spc_request($sid, 6, "$rlen");

            // send data
            spc_request($sid, 7, $rwbuf);

            // print data
            echo $rwbuf;
        }
    }
    usleep(1000);
}
?>

※ Примечание: Параметр интервала между разделителями кадров ("set ifd") и настройка интервала между кадрами ("set ifg") не могут использоваться одновременно.