1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/**
* @example serial_stream_write.cpp
*/
#include <libserial/SerialStream.h>
#include <cstdlib>
#include <fstream>
#include <iostream>
constexpr const char* const SERIAL_PORT_2 = "/dev/ttyUSB1" ;
/**
* @brief This example reads the contents of a file and writes the entire
* file to the serial port one character at a time. To use this
* example, simply utilize TestFile.txt or another file of your
* choosing as a command line argument.
*/
int main(int argc, char** argv)
{
using namespace LibSerial ;
// Determine if an appropriate number of arguments has been provided.
if (argc < 2)
{
// Error message to the user.
std::cerr << "Usage: " << argv[0] << " <filename>" << std::endl ;
// Exit the program if no input file argument has been given.
return 1 ;
}
// Open the input file for reading.
std::ifstream input_file(argv[1]) ;
// Determine if the input file argument is valid to read data from.
if (!input_file.good())
{
std::cerr << "Error: Could not open file "
<< argv[1] << " for reading." << std::endl ;
return 1 ;
}
// Instantiate a SerialStream object.
SerialStream serial_stream ;
try
{
// Open the Serial Port at the desired hardware port.
serial_stream.Open(SERIAL_PORT_2) ;
}
catch (const OpenFailed&)
{
std::cerr << "The serial port did not open correctly." << std::endl ;
return EXIT_FAILURE ;
}
// Set the baud rate of the serial port.
serial_stream.SetBaudRate(BaudRate::BAUD_115200) ;
// Set the number of data bits.
serial_stream.SetCharacterSize(CharacterSize::CHAR_SIZE_8) ;
// Turn off hardware flow control.
serial_stream.SetFlowControl(FlowControl::FLOW_CONTROL_NONE) ;
// Disable parity.
serial_stream.SetParity(Parity::PARITY_NONE) ;
// Set the number of stop bits.
serial_stream.SetStopBits(StopBits::STOP_BITS_1) ;
// Read characters from the input file and write them to the serial port.
std::cout << "Writing input file contents to the serial port." << std::endl ;
// Create a variable to store data from the input file and write to the serial port.
char data_byte = 0 ;
while (input_file)
{
// Read data from the input file.
input_file.read(&data_byte, 1) ;
// Write the data to the serial port.
serial_stream.write(&data_byte, 1) ;
// Wait until the data has actually been transmitted.
serial_stream.DrainWriteBuffer() ;
// Print to the terminal what is being written to the serial port.
std::cout << data_byte ;
}
// Successful program completion.
std::cout << "The example program successfully completed!" << std::endl ;
return EXIT_SUCCESS ;
}
|