Я создал класс для последовательной связи с функцией чтения.Я использую boost :: asio :: read для чтения данных из последовательной ссылки.Но функция чтения ждет бесконечно, пока не будет получен байт.
Я хочу создать поток, который останавливает функцию чтения, если максимальное время ожидания прошло (потому что в системе, похоже, происходит сбой).
Можно ли выйти из функции в C ++ из другой функции?Или отменить вызов функции чтения из другой функции?
std::string SerialLink::read(const int maxTime) {
std::string data;
std::vector < uint8_t > buf;
const int readSize = 1;
try {
buf.resize(readSize);
//boost::asio::read waits until a byte has been received
boost::asio::read(port_, boost::asio::buffer(buf, readSize));
data = buf.front();
}
catch (const std::exception & e) {
std::cerr << "SerialLink ERROR: " << e.what() << "\n";
return -1;
}
return data();
}
void threadTime() {
//This function will keep track of the time and if maxTime has passed, the read function/function call must be cancelled and return -1 if possible
}