Это мой первый раз, когда я использую boost, и я уверен, что есть что-то простое, что мне не хватает. Я пытаюсь отправить 3 байта данных через последовательный порт. Эти три байта:Неожиданные результаты с Boost SerialPort
день = 2; month = 1; год = 13;
Со следующим кодом отправляется только первый байт.
io_service Link;
serial_port serial(Link);
serial.open("/dev/ttyUSB0");
if(serial.is_open())
{
qDebug() <<"open";
serial.set_option(serial_port_base::baud_rate(9600));
//send data
boost::array<int,3> array ={{day,month,year}};
qDebug()<<serial.write_some(boost::asio::buffer(array,3));
serial.close();
}
Устройство, которое я отправляю в отчеты, возвращает мне (в шестнадцатеричном виде) значения, которые он получает. Он получает значения 0x02,0x00,0x00. Теперь донастроить код, так что я могу получить все три байта, посланные на устройство:
io_service Link;
serial_port serial(Link);
serial.open("/dev/ttyUSB0");
if(serial.is_open())
{
qDebug() <<"open";
serial.set_option(serial_port_base::baud_rate(9600));
//send data
boost::array<int,1> array ={{day}};
qDebug()<<serial.write_some(boost::asio::buffer(array,1));
array={{month}};
qDebug()<<serial.write_some(boost::asio::buffer(array,1));
array={{year}};
qDebug()<<serial.write_some(boost::asio::buffer(array,1));
serial.close();
}
Устройство Читает: 0x02,0x01,0x0D. Это очень неправильно, и я хотел бы правильно использовать эти библиотеки. Я подозреваю, что я не правильно использую классы буфера и массива boost, но я действительно не знаю. Есть идеи?
Определить «чувствует себя очень неправильно»? –
Передача массива с одним значением три раза, кажется, приводит к тому, что массив имеет массив. Почему массив не может содержать все три элемента и отправляться один раз? Если я делаю это правильно, я был бы рад стереть вопрос. – CountMurphy