수신 데이터 크기를 확인하는 명령어는 rxlen입니다. 프레임 간격("set ifg") 또는 프레임 구분자("set ifd")가 설정된 경우에는 수신된 프레임의 길이가 반환됩니다. 이 때 수신된 프레임이 여러개인 경우 가장 먼저 수신된 프레임의 길이가 반환됩니다.
"get rxlen [del]"
응답 값은 정수 형태의 문자열입니다. del에 구분자를 지정하면 해당 구분자까지의 길이를 반환합니다.
※ 구분자 설정은 프레임 구분자 설정의 "프레임의 끝 구분하기"를 참조하시기 바랍니다.
수신 데이터 크기 확인 예
이 예제는 시리얼포트로 수신한 데이터를 그대로 다시 송신하는 예제입니다.
<?php
include "/lib/sd_spc.php";
$rwbuf = "";
$sid = 14;
spc_reset();
spc_sync_baud(115200);
spc_request_dev($sid, "set uart 115200N81");
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);
}
?>
지정한 구분자까지의 수신 데이터 크기 확인 예
이 예제는 0x0d를 구분자로 하여 프레임 단위로 데이터를 수신하고 해당 데이터를 다시 송신하는 예제입니다.
<?php
include "/lib/sd_spc.php";
$rwbuf = "";
$sid = 14;
spc_reset();
spc_sync_baud(115200);
spc_request_dev($sid, "set uart 115200N81");
while(1)
{
$txfree = (int)spc_request_dev($sid, "get txfree");
$rlen = (int)spc_request_dev($sid, "get rxlen 0d");
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);
}
?>