[英]Class Instantiated from here error c++
I am trying to create a class that will read and parse data from a Serial port, however I keep getting an instantiated error and I don't know why. 我正在尝试创建一个将从串行端口读取和解析数据的类,但是我不断收到实例化的错误,我不知道为什么。 The class takes in a serial port and its io_service.
该类接收一个串行端口及其io_service。 I am using boost.
我正在使用升压。 I am getting a ton of errors, but I think its because its cumulative (I think, I am not sure if that is correct).
我遇到了很多错误,但是我认为是因为它的累积性(我想我不确定那是否正确)。 Here is the first one:
这是第一个:
In file included from /usr/include/boost/bind.hpp:22:0, from ../Sources/Magnetic Compensator Core.cpp:17: 在/usr/include/boost/bind.hpp:22:0中包含的文件中,.. / Sources / Magnetic Compensator Core.cpp:17中:
/usr/include/boost/bind/bind.hpp: In instantiation of 'boost::_bi::result_traits&, const boost::system::error_code&, unsigned int)>': /usr/include/boost/bind/bind_template.hpp:15:48: instantiated from 'boost::_bi::bind_t&, const boost::system::error_code&, unsigned int), boost::_bi::list4, boost::reference_wrapper >, boost::arg<1>, boost::arg<2> > >'
/usr/include/boost/bind/bind.hpp:在'boost :: _ bi :: result_traits&,const boost :: system :: error_code&,unsigned int)>'的实例中:/ usr / include / boost / bind / bind_template .hpp:15:48:从'boost :: _ bi :: bind_t&,const boost :: system :: error_code&,unsigned int实例化),boost :: _ bi :: list4,boost :: reference_wrapper>,boost :: arg < 1>,boost :: arg <2>>>'
Here is the code for the class: 这是该类的代码:
class mag_serial
{
bool data_available;
boost::asio::serial_port& ser_port;
boost::asio::deadline_timer timeout;
char my_buffer[1];
std::string str;
std::string st;
void read_callback(bool& data_available, boost::asio::deadline_timer& timeout, const boost::system::error_code& error, std::size_t bytes_transferred)
{
data_available = true;
if(str.length() > 1)
{
if (!(str.at(str.length() - 1) == temp))//&str.at(str.length() - 1) != "#")
{
str.append(my_buffer,bytes_transferred);
if(str.at(str.length() - 1) == quit)
{
cout << "I am quitting";
Stop();
ser_port.cancel();
ser_port.close();
return;
}
i++;
}
else if (str.at(str.length() - 1) == temp)
{
st = str;//.substr(1, str.size());
// Processing Functions
}
}
else
{
str.append(my_buffer,bytes_transferred);
if(str.at(0) == quit)
{
cout << "I am quitting";
Stop();
ser_port.cancel();
ser_port.close();
return;
}
}
ser_port.async_read_some(boost::asio::buffer(my_buffer),
boost::bind(&mag_serial::read_callback, boost::ref(data_available),
boost::ref(timeout),boost::asio::placeholders::error(),
boost::asio::placeholders::bytes_transferred()));
data_available = true;
}
void wait_callback(boost::asio::serial_port& ser_port, const boost::system::error_code& error)
{
if (error)
{
// Data was read and this timeout was cancelled
return;
}
}
public:
mag_serial(boost::asio::serial_port& ser_port, boost::asio::io_service& io_svc): ser_port(ser_port), timeout(ser_port.get_io_service()){}
void read_mag_serial_thread()
{
bool data_available = false;
ser_port.async_read_some(boost::asio::buffer(my_buffer),
boost::bind(&mag_serial::read_callback, boost::ref(data_available),
boost::ref(timeout),boost::asio::placeholders::error(),
boost::asio::placeholders::bytes_transferred()));
timeout.expires_from_now(boost::posix_time::seconds(1));
timeout.async_wait(boost::bind(&mag_serial::wait_callback, boost::ref(ser_port),boost::asio::placeholders::error()));
io_svc.run();
if(!data_available)
{
ser_port.close();
cout << "ser_port was closed";
}
}
};
This won't compile 这不会编译
ser_port.async_read_some(boost::asio::buffer(my_buffer),
boost::bind(&mag_serial::read_callback, boost::ref(data_available),
boost::ref(timeout),boost::asio::placeholders::error(),
boost::asio::placeholders::bytes_transferred()));
the member function mag_serial::read_callback
needs an instance to bind to. 成员函数
mag_serial::read_callback
需要实例绑定。
ser_port.async_read_some(
boost::asio::buffer(my_buffer),
boost::bind(
&mag_serial::read_callback,
this,
boost::ref(data_available),
boost::ref(timeout),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
Here's a coliru , I didn't attempt to fix the formatting. 这是coliru ,我没有尝试修复格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.