设定帧间间隔


设定帧间间隔的命令是ifg

"set ifg (bits)"

bits上设定帧间间隔。

帧间间隔设定是根据利用时间来区分数据帧的方式。 设定单位是字节,可最少从0设定至最大30000。 举例来讲在9600 bps中将帧间间隔设定为10,实际设定时间约为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") 无法同时使用。