# serial: examples/serial_example.cc File Reference

serial 1.0.1 Cross-platform serial port library written in C++

- Main Page
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
Functions
examples/serial_example.cc File Reference
`#include <string>`
`#include <iostream>`
`#include <cstdio>`
`#include <unistd.h>`
`#include "serial/serial.h"`
Include dependency graph for serial_example.cc:

## Functions

void | my_sleep (unsigned long milliseconds)
int | run (int argc, char **argv)
int | main (int argc, char **argv)

## Function Documentation

int main | ( | int | argc,
|  | char ** | argv
| ) |  |

                                    {
      try {
        return run(argc, argv);
      } catch (exception &e) {
        cerr << "Unhandled Exception: " << e.what() << endl;
      }
    }

void my_sleep | ( | unsigned long | milliseconds | ) |

                                              {
    #ifdef _WIN32
          Sleep(milliseconds); // 100 ms
    #else
          usleep(milliseconds*1000); // 100 ms
    #endif
    }

int run | ( | int | argc,
|  | char ** | argv
| ) |  |

    {
      if(argc < 3) {
        cerr << "Usage: test_serial <serial port address> ";
        cerr << "<baudrate> [test string]" << endl;
        return 0;
      }
      // Argument 1 is the serial port
      string port(argv[1]);

      // Argument 2 is the baudrate
      unsigned long baud = 0;
      sscanf(argv[2], "%lu", &baud);

      // port, baudrate, timeout in milliseconds
      serial::Serial my_serial(port, baud, serial::Timeout::simpleTimeout(1000));

      cout << "Is the serial port open?";
      if(my_serial.isOpen())
        cout << " Yes." << endl;
      else
        cout << " No." << endl;

      // Get the Test string
      int count = 0;
      string test_string;
      if (argc == 4) {
        test_string = argv[3];
      } else {
        test_string = "Testing.";
      }

      // Test the timeout, there should be 1 second between prints
      cout << "Timeout == 1000ms, asking for 1 more byte than written." << endl;
      while (count < 10) {
        size_t bytes_wrote = my_serial.write(test_string);

        string result = my_serial.read(test_string.length()+1);

        cout << "Iteration: " << count << ", Bytes written: ";
        cout << bytes_wrote << ", Bytes read: ";
        cout << result.length() << ", String read: " << result << endl;

        count += 1;
      }

      // Test the timeout at 250ms
      my_serial.setTimeout(serial::Timeout::max(), 250, 0, 250, 0);
      count = 0;
      cout << "Timeout == 250ms, asking for 1 more byte than written." << endl;
      while (count < 10) {
        size_t bytes_wrote = my_serial.write(test_string);

        string result = my_serial.read(test_string.length()+1);

        cout << "Iteration: " << count << ", Bytes written: ";
        cout << bytes_wrote << ", Bytes read: ";
        cout << result.length() << ", String read: " << result << endl;

        count += 1;
      }

      // Test the timeout at 250ms, but asking exactly for what was written
      count = 0;
      cout << "Timeout == 250ms, asking for exactly what was written." << endl;
      while (count < 10) {
        size_t bytes_wrote = my_serial.write(test_string);

        string result = my_serial.read(test_string.length());

        cout << "Iteration: " << count << ", Bytes written: ";
        cout << bytes_wrote << ", Bytes read: ";
        cout << result.length() << ", String read: " << result << endl;

        count += 1;
      }

      // Test the timeout at 250ms, but asking for 1 less than what was written
      count = 0;
      cout << "Timeout == 250ms, asking for 1 less than was written." << endl;
      while (count < 10) {
        size_t bytes_wrote = my_serial.write(test_string);

        string result = my_serial.read(test_string.length()-1);

        cout << "Iteration: " << count << ", Bytes written: ";
        cout << bytes_wrote << ", Bytes read: ";
        cout << result.length() << ", String read: " << result << endl;

        count += 1;
      }

      return 0;
    }