Межкадровый интервал


Командой для установки интервала между кадрами является ifg.

"set ifg (bits)"

Укажите интервал в bits.

Межкадровый промежуток - это способ разоичать кадры с использованием времени. Интервал может быть установлен от 0 до 30000 бит. Например, если бы установите интервал кадра в 10 на 9600 bps, то фактическое время установки будет около 0.001 секунды (= 10/9600). Даже если устройство настроено на одно и тоже значение, заданное время будет отличаться, если отличается скорость обмена.

В случае передачи данных

Переданные кадры передаются с заданным интервалом кадра.

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

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

spc_request_dev($sid, "set uart 115200N81");
// set frame to frame interval : 100 milliseconds
spc_request_dev($sid, "set ifg 11520");

spc_request($sid, 7, "This is the first frame.\r\n");
spc_request($sid, 7, "This is the second frame.\r\nIt will be transmitted 100 milliseconds later right after the first packet has been transmitted. \r\n");
?>

В случае получения данных

Если при приеме данных до установленного времени новые данные отсутствуют, то данные, полученные до этой точки, распознаются как один кадр. В это время вы можете проверить длину кадра при помощи команды "get rxlen" и получить данные в еденицах кадра.

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

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

spc_request_dev($sid, "set uart 115200N81");
// set frame to frame interval : 100 milliseconds
spc_request_dev($sid, "set ifg 11520");

while(1)
{
    $rlen = (int)spc_request_dev($sid, "get rxlen");
    if($rlen > 0)
    {
        $rbuf = spc_request($sid, 6, "$rlen");
        echo "frame length = $rlen\r\n";
        hexdump($rbuf);
    }
}
?>

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