프레임 간격을 설정하는 명령어는 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")은 동시에 사용할 수 없습니다.