Ich versuche serielle Daten aus Arduino zu lesen, aber wenn ich mein Programm ausführen liest es nur alle Daten im Puffer, die Daten, die tatsächlich vor dem Programmstart gesendet wurde. Und dann endet i mit dem folgenden Fehler:Boost asio seriellen Port "Ende der Datei"
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
what(): read: End of file
Aborted (core dumped)
ich auch nicht einmal die Daten aus will, bevor das Programm ausgeführt wurde. Hier ist mein C++ Code:
#include <iostream>
#include <stdint.h>
#include <boost/asio.hpp>
#include <boost/asio/serial_port.hpp>
using namespace boost;
int main() {
asio::io_service io;
asio::serial_port port(io);
port.open("/dev/ttyUSB0");
port.set_option(asio::serial_port_base::baud_rate(115200));
char d;
while (true) {
asio::read(port, asio::buffer(&d, 1));
std::cout << d << std::endl;
}
port.close();
}
Soweit ich weiß, dass die Lesefunktion blockiert werden soll, so dass es für die nächste Eingabe wartet, nicht wahr? Wie kann es dann das Ende von "Datei" erreichen?
Hallo, ich habe das gleiche Problem. Schlimmer noch, das * binary *, das gestern funktioniert hat, gibt das gleiche Problem wie heute. Möglicherweise aufgrund einiger Timeout-Einstellungen. –
Also habe ich heute genau denselben Code ausgeführt, mit dem exakt gleichen Compilation-Prozess und jetzt funktioniert es auf magische Weise ... –