Командой для получения данных является 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);
}
?>