2016-03-23 7 views
0

boost::shared_ptr'u async_read_until ile kullanmaya çalışıyorum ve işe yaramayacağım.basic_serial_port ve async_read_until

boost::asio::io_service io_service; 
typedef boost::shared_ptr<boost::asio::serial_port> serial_port_ptr; 
serial_port_ptr serial_port; 
boost::asio::streambuf response_data; 
char delimiter = '\n'; 
boost::system::error_code error; 

serial_port = serial_port_ptr(new boost::asio::serial_port(io_service)); 
serial_port->open("/dev/ttyS0", error); 

boost::asio::async_read_until(
    serial_port.get(), response_data, delimiter, 
    boost::bind(
    &serial_comm::data_received, 
     this, boost::asio::placeholders::error, 
     boost::asio::placeholders::bytes_transferred 
) 
); 

alıyorum hata no type named 'type' in 'struct std::enable_if<false, void>' olduğunu

okumak bağlamak

başlık: Bu benim basitleştirilmiş kodudur. Teşekkür ederim.

+1

Bu şekilde yeniden yazılmalıdır: serial_port.get() 'yerine' * serial_port' denerseniz ne olur? – Xirema

+0

@Xirema işe yaradı! parlak! Teşekkür ederim. – xinthose

cevap

1

Referans yerine boost::asio::async_read_until girişine bir işaretçi sağladınız.

boost::asio::async_read_until(
    *serial_port, response_data, delimiter, 
    boost::bind(
    &serial_comm::data_received, 
     this, boost::asio::placeholders::error, 
     boost::asio::placeholders::bytes_transferred 
) 
);