発端
 C++でシリアルポートのライブラリを探したがいいのがなかった。
 Siv3Dにあるがクロスプラットフォームに(まだ)対応してない。
  →じゃあ自分で作ろう
成果物
 やったぜ
 https://github.com/MurakamiShun/SerialPort
使用例
main.cpp
# include "Serial.hpp"
# include <vector>
# include <string>
# include <iostream>
using namespace std;
int main() {
	//デバイス一覧
	auto list = getSerialList();
	for (const auto& info : list) {
		cout << "device name:" << info.device_name() << endl;
		cout << "name:" << info.port() << "\n" << endl;
	}
	Serial serial;
	int port;
	cin >> port;
	//オープン
	if (!serial.open(list[port], 9600))
		return -1;
	//SerialInfo構造体にポート名とデバイス名が入っている
	SerialInfo info = serial.getInfo();
	cout << "open success" << endl;
	cout << "device name:" << info.device_name() << endl;
	cout << "name:" << info.port() << "\n" << endl;
	//以下ループ
	while (true) {
		auto v = serial.read();
		for (auto c : v) {
			cout << c;
		}
	}
	return 0;
}
使用するときの注意点
 ポート名とデバイスネームはWindwosとLinuxで違くなる。
 バッファが少ないから別のスレッドで処理するとかして、一杯にならないように。
ちょっと説明
 デバイスネームを取得する際、Windowsではフレンドリーネームなるものを取得。
 Linuxでは現在主流のUSB-UART変換だった場合にUSBのPIDとPIDを取得して、変換アダプタのベンダー名と製品名をデバイスネームとした。
 Serial::Configにパリティやらボーレートを設定してsetConfigすれば設定の変更ができる。
 あとはヘッダファイル見てください(言葉で説明するより早いと思う)
