Connecting with Arduino over USB

 Arduino Code
String incomingMessage = "";

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    incomingMessage = Serial.readStringUntil('\n');
    incomingMessage.trim();  // Remove whitespace and newline

    if (incomingMessage == "ON") {
      digitalWrite(LED_BUILTIN, HIGH);
      Serial.println("LED is ON");
    } else if (incomingMessage == "OFF") {
      digitalWrite(LED_BUILTIN, LOW);
      Serial.println("LED is OFF");
    } else {
      Serial.println("Unknown command");
    }
  }
}
#include "rlenvs/boards/arduino/arduino_connector_usb_base.h"

#include <iostream>
#include <string>
#include <chrono>
#include <thread>

namespace example
{
    using rlenvscpp::boards::arduino::ArduinoCMDBase;
    using rlenvscpp::boards::arduino::ArduinoConnectorUSBBase;

    struct ArduinoONCMD: public ArduinoCMDBase
    {
        virtual std::string get_cmd()const final;
    };

    std::string ArduinoONCMD::get_cmd() const
    {
        return "ON";
    }

    struct ArduinoOFFCMD: public ArduinoCMDBase
    {
        virtual std::string get_cmd()const final;
    };

    std::string ArduinoOFFCMD::get_cmd() const
    {
        return "OFF";
    }
}


int main() {

    using namespace example;

    ArduinoConnectorUSBBase connector("/dev/ttyACM0");
    connector.connect();

    ArduinoONCMD on_cmd;
    ArduinoOFFCMD off_cmd;

    std::string user_input;
    while (true) {
        std::cout << "Enter command ON/OFF or e (to exit): ";
        std::getline(std::cin, user_input);

        if (user_input == "e") {
            connector.send_cmd(off_cmd);
            break;
        }

        if (user_input == "ON")
        {
            connector.send_cmd(on_cmd);
        }

        if (user_input == "OFF")
        {
            connector.send_cmd(off_cmd);
        }

        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    connector.close_connection();
    return 0;
}

References