프레임 간격 설정


프레임 간격을 설정하는 명령어는 ifg입니다.

"set ifg (bits)"

bits에 프레임 간격을 설정합니다.

프레임 간격 설정은 시간을 이용해 프레임을 구분하는 방식입니다. 설정 단위는 비트(bits)이며 최소 0에서 최대 30000까지 설정할 수 있습니다. 예를 들어 9600bps에서 프레임 간격을 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")은 동시에 사용할 수 없습니다.