ответа не нашел.
Есть программа на Dart, которая получает данные с радиомодуля по сериал порту.
Слушаю сериал порт через stdout.listen процесса cat /dev/ttyUSB0 (сделал так в попытках починить работу через libserialport, но только сейчас понял, что проблема немного в другом).
В итоге при большом количестве данных, я получаю их частями, причем всегда разного размера. Как я понял, это связано со скоростью передачи данных между радиомодулями (listen.onData вызывается быстрее полной передачи).
Кусок кода c чтением данных:
Process p = await Process.start("cat", [_serialPort]);
p.stdout.listen((event) {
String raw = utf8.decode(event);
print(raw);
});
Вывод:
flutter: Very big data to trigger this bug Very big data to trigger this bug Very big data to trigger this b
flutter: ug Very big data to trigger this bug Very big data to trigger this bug Very big data to trigger this bug
В итоге получается, что listen.onData вызывается два раза с двумя кусками данных. Так вот, как можно сделать, чтобы listen запускался только после полного получения данных? Просто проверять целостность/слепливать оба куска не получается, потому-что иногда выдает только один кусок данных и один раз.
Заранее спасибо.
Перенаправь вывод процесса в файл, а потом по окончанию, считывай файл))д)
Ну можно попробовать конечно, но это дичайшие костыли)
Обсуждают сегодня