Note that there are some explanatory texts on larger screens.

plurals
  1. POserial port configuration using boost ASIO
    primarykey
    data
    text
    <p>I am configuring serial port using boost asio. but why below code is giving error? If I comment set_option it works fine.</p> <p>below code gives error</p> <blockquote> <p>serial_config.cpp:13: error: expected unqualified-id before numeric constant In file included from /home/chirag/boost_install/include/boost/asio/serial_port_service.hpp:25, from /home/chirag/boost_install/include/boost/asio/basic_serial_port.hpp:30, from /home/chirag/boost_install/include/boost/asio.hpp:25, from serial_config.cpp:1: /home/chirag/boost_install/include/boost/asio/detail/reactive_serial_port_service.hpp: In static member function âstatic boost::system::error_code boost::asio::detail::reactive_serial_port_service::store_option(const void*, termios&amp;, boost::system::error_code&amp;) [with SettableSerialPortOption = int]â: /home/chirag/boost_install/include/boost/asio/detail/reactive_serial_port_service.hpp:126: instantiated from âboost::system::error_code boost::asio::detail::reactive_serial_port_service::set_option(boost::asio::detail::reactive_descriptor_service::implementation_type&amp;, const SettableSerialPortOption&amp;, boost::system::error_code&amp;) [with SettableSerialPortOption = int]â /home/chirag/boost_install/include/boost/asio/serial_port_service.hpp:167: instantiated from âboost::system::error_code boost::asio::serial_port_service::set_option(boost::asio::detail::reactive_descriptor_service::implementation_type&amp;, const SettableSerialPortOption&amp;, boost::system::error_code&amp;) [with SettableSerialPortOption = int]â /home/chirag/boost_install/include/boost/asio/basic_serial_port.hpp:390: instantiated from âvoid boost::asio::basic_serial_port::set_option(const SettableSerialPortOption&amp;) [with SettableSerialPortOption = int, SerialPortService = boost::asio::serial_port_service]â serial_config.cpp:31: instantiated from here /home/chirag/boost_install/include/boost/asio/detail/reactive_serial_port_service.hpp:194: error: request for member âstoreâ in â*(const int*)optionâ, which is of non-class type âconst intâ</p> </blockquote> <pre><code>#include &lt;boost/asio.hpp&gt; // include boost using namespace::boost::asio; // save tons of typing #include &lt;iostream&gt; using std::cin; // These are the values our port needs to connect #ifdef _WIN32 // windows uses com ports, this depends on what com port your cable is plugged in to. const char *PORT = "COM3"; #else // *nix com ports const char *PORT = "dev/ttyS3"; #endif // Note: all the following except BAUD are the exact same as the default values // what baud rate do we communicate at serial_port_base::baud_rate BAUD(19200); // how big is each "packet" of data (default is 8 bits) serial_port_base::character_size CSIZE( 8 ); // what flow control is used (default is none) serial_port_base::flow_control FLOW( serial_port_base::flow_control::none ); // what parity is used (default is none) serial_port_base::parity PARITY( serial_port_base::parity::none ); // how many stop bits are used (default is one) serial_port_base::stop_bits STOP( serial_port_base::stop_bits::one ); int main() { // create the I/O service that talks to the serial device io_service io; // create the serial device, note it takes the io service and the port name serial_port port( io, PORT ); // go through and set all the options as we need them // all of them are listed, but the default values work for most cases port.set_option( BAUD ); port.set_option( CSIZE ); port.set_option( FLOW ); port.set_option( PARITY ); port.set_option( STOP ); // buffer to store commands // this device reads 8 bits, meaning an unsigned char, as instructions // varies with the device, check the manual first unsigned char command[1] = {0}; // read in user value to be sent to device int input; cin &gt;&gt; input; // Simple loop, since the only good values are [0,255] // break when a negative number is entered. // The cast will convert too big numbers into range. while( input &gt;= 0 ) { // convert our read in number into the target data type command[0] = static_cast&lt;unsigned char&gt;( input ); // this is the command that sends the actual bits over the wire // note it takes a stream and a asio::buffer // the stream is our serial_port // the buffer is constructed using our command buffer and // the number of instructions to send write( port, buffer( command, 1 ) ); // read in the next input value cin &gt;&gt; input; } // all done sending commands return 0; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload