Como descartar dados quando enviados com boost :: asio?
Estou escrevendo um código que lê e grava no dispositivo serial usandoboost::asio
classe. No entanto, ao enviar várias seqüências entre programas, notei que no programa receptor os dados são lidos na ordem em que foram gravados na porta serial, e não como os dados são enviados do outro programa - Se eu começar a ler alguns segundos depois, não recebo os valores que estou enviando no momento, mas os que foram enviados anteriormente. Suponho que isso seja causado pela forma como estou configurando meuboost::asio::serial_port
:
int main(int argc, char const *argv[]){
int baud=atoi(argv[1]);
std::string pty=argv[2];
printf("Virtual device: %s\n",pty.data());
printf("Baud rate: %d\n",baud);
boost::asio::io_service io;
boost::asio::serial_port port(io, pty);
port.set_option(boost::asio::serial_port_base::baud_rate(baud));
// counter that writes to serial port in 1s intervals
int val=0;
while (1){
std::string data=std::to_string(val);
data+='\n';
std::cout << data;
write(port,boost::asio::buffer(data.c_str(),data.size()));
sleep(1);
val++;
data.clear();
}
port.close();
return 0;
}
Existe uma maneira de forçar o descarte de dados passados assim que um novo valor for enviado para a porta serial (que eu suponho que deve ser feita na parte write () do código)?