Help us understand the problem. What is going on with this article?

C++でクロスプラットフォームなシリアルポートのライブラリ作った

More than 1 year has passed since last update.

発端

 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すれば設定の変更ができる。
 あとはヘッダファイル見てください(言葉で説明するより早いと思う)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした