Код: Выделить всё
#include
#include
#include
#include
#include
#include
class ReadHelper
{
boost::asio::serial_port& port;
size_t bufferSize;
char* read_msg_;
std::deque m_received;
boost::mutex m_mutex;
boost::condition_variable m_var;
public:
ReadHelper(boost::asio::serial_port& port, size_t bufferSize) :
port(port),
bufferSize(bufferSize),
read_msg_( new char[bufferSize] )
{
}
~ReadHelper()
{
delete[] read_msg_;
}
std::chrono::steady_clock::time_point m_started;
inline long long elapsed()
{
auto elapsed = std::chrono::high_resolution_clock::now() - m_started;
return std::chrono::duration_cast(elapsed).count();
}
long long wait_for_response()
{
boost::mutex::scoped_lock lock(m_mutex);
while ( m_received.size() < 4 )
{
m_var.timed_wait(lock, boost::posix_time::microseconds(1));
}
if ( m_received[0] == 0x00 &&
m_received[1] == (char)0xFF &&
m_received[2] == 0x01 &&
m_received[3] == 0x03 )
{
auto elapsed_ = elapsed();
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79504100/why-buffer-size-of-boostasioserial-portasync-read-some-affects-function-sp[/url]