Почему размер буфера Boost :: Asio :: Serial_port :: Async_read_some влияет на скорость функции?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему размер буфера Boost :: Asio :: Serial_port :: Async_read_some влияет на скорость функции?

Сообщение Anonymous »

У меня есть устройство USB, которое отвечает {0x00 0xff 0x01 0x03} Когда вы отправляете его {0x00,0xff, 0x01,0x02} . Я хотел бы реализовать тест PING, отправлять команды и вычислять среднее время ответа.

Код: Выделить всё

#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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»