LINUX.ORG.RU

Как синхронно считывать данные?

 ,


0

1

Всем привет.

Мне нужно с порта /dev/ttyACM1 (в данном случае, это Arduino) считывать данные.

Пишу простой скрипт на PHP:

<?php
    $port = fopen("/dev/ttyACM1", "r");
    
    if (!$port) 
    {
        die ("Не удалось открыть порт");
    }
    else 
    {
        while (true)
        {
            echo fread($port, 8);
        }
    }

    fclose($port);
?>

Скетч на Arduino

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  Serial.println("hello!");
}
Но данные считываются не синхронно. С порта может прийти hel, ello! или же нормальный «hello!».

Вопрос, как получать целостную строку, которую отправила ардуинка?

★★★

Вставляй символ какой-нибудь в качестве конца посылки и жди его. Данные везде так могут прийти, потому как всяких программных прослоек со своими внутренними буферами полно.

ilovewindows ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.