Работа с UART в LINUX + PHP
требуется помощь лиги IT
Делаю небольшую поделку - проект умного дома.
В основе ардуино + одноплатник orangepi zero
на одноплатнике стоит armbian и поднят httl сервер.
на сервере страничка с кодом ajax по таймеру делает запрос через php и соответственно получает ответ. все работает до тех пор, пока есть ответ.
если ответа нет, то на третьем-четвертом запросе сервер наглухо виснет.
запрос делаю так (пробовал все три варианта):
$bufft = fgets($fp,7);
//$bufft = fread($fp,7);
//$bufft = stream_get_line($fp,7); + //stream_set_timeout($fp, 0, 15000);
(где: $filename = "/dev/ttyS1"; //порт $fp = fopen($filename, "w+"); )
Насколько я понимаю, проблема в том, что при отсутствии ответа в буфере /dev/ttyS1 нет вообще ничего, те нет в файле даже символа конца строки (файла). и считывание идет по бесконечному циклу, пока не повесит процесс.
Экспериментально установлено, что при запросе $bufft = fgets($fp,1); , те при попытке считать только первый символ строки ничего не виснет, но возвращается строка из 0 символов. те полностью пустая.
Посоветуйте, как перед считыванием буфера определить, что он пуст (при попытке считывания он стирается) или как считывать пустой буфер/dev/ttyS1 без последующего зависания?