0
与串行通信与我的arduino抛出与BoostAsio的c + +串行。我发现这个代码可以在Visual Studio中编译,但是它无法在linux-ubuntu上编译。与与Arduino在ubuntu c + +串行通信与boost :: asio
我编译时不使用任何标志。这可能是问题吗?
#include <iostream>
#include <boost/asio.hpp>
using namespace::boost::asio;
using namespace std;
#define PORT_LINUX "/dev/ttyUSB0"
#define PORT_WINDOW "COM7"
#define SECURITY_CAMERA 1
#define FIRE_SENSOR 2
#define VOICE_SENSOR 3
#define DISTANCE_SENSOR 4
// Base serial settings
serial_port_base::baud_rate BAUD(9600);
serial_port_base::flow_control FLOW(serial_port_base::flow_control::none);
serial_port_base::parity PARITY(serial_port_base::parity::none);
serial_port_base::stop_bits STOP(serial_port_base::stop_bits::one);
serial_port_base::character_size CSIZE(serial_port_base::character_size::character_size(8U));
//serial_port_base::stop_bits STOP(serial_port_base::stop_bits::one);
int main(){
io_service io;
serial_port port(io, PORT_LINUX);
// Setup port - base settings
port.set_option(BAUD);
port.set_option(FLOW);
port.set_option(PARITY);
port.set_option(STOP);
port.set_option(CSIZE);
char opcode,priority;
int num;
while(1){
num = read(port,buffer(&opcode,1));
num = read(port,buffer(&priority,1));
cout << opcode<<" "<<priority<<endl;
}
return 0;
}
编译器错误:
error: expected unqualified-id before numeric constant
In file included from /usr/include/boost/asio/serial_port_service.hpp:25:0,
from /usr/include/boost/asio/basic_serial_port.hpp:30,
from /usr/include/boost/asio.hpp:25,
from main.cpp:2:
/usr/include/boost/asio/detail/reactive_serial_port_service.hpp: In instantiation
of ‘static boost::system::error_code
boost::asio::detail::reactive_serial_port_service::store_option(const void*,
termios&, boost::system::error_code&) [with SettableSerialPortOption = int]’:
/usr/include/boost/asio/detail/reactive_serial_port_service.hpp:126:20:
required from ‘boost::system::error_code
boost::asio::detail::reactive_serial_port_service::set_option(
boost::asio::detail::reactive_serial_port_service::implementation_type&,
const SettableSerialPortOption&, boost::system::error_code&) [with
SettableSerialPortOption = int;
boost::asio::detail::reactive_serial_port_service::implementation_type =
boost::asio::detail::reactive_descriptor_service::implementation_type]’
/usr/include/boost/asio/serial_port_service.hpp:167:53: required from
‘boost::system::error_code
boost::asio::serial_port_service::set_option(
boost::asio::serial_port_service::implementation_type&, const
SettableSerialPortOption&, boost::system::error_code&) [with
SettableSerialPortOption = int;
boost::asio::serial_port_service::implementation_type =
boost::asio::detail::reactive_descriptor_service::implementation_type]’
/usr/include/boost/asio/basic_serial_port.hpp:390:5: required from ‘void
boost::asio::basic_serial_port<SerialPortService>::set_option(const
SettableSerialPortOption&) [with SettableSerialPortOption = int;
SerialPortService = boost::asio::serial_port_service]’
main.cpp:35:26: required from here
/usr/include/boost/asio/detail/reactive_serial_port_service.hpp:194:20: error:
request for member ‘store’ in ‘*(const int*)option’, which is of non-class type
‘const int’