Linux のシリアル ポートに接続されているすべての接続デバイスを検出する良い方法はありますか? 私は C++ でプログラミングしていますが、他の例も歓迎します。
すべてのポートを開こうとするだけで、成功したらポートのリストに追加できますが、これはあまり良い解決策ではないようです。
あなたは開発ディレクターに行くことができ、私のシリアルポートはUSBポートなので、どのttyUSB..ファイルが作成されたかを確認できます。ただし、tty0 から tty63 までのファイルは常にこのディレクトリにあるため、これは USB 以外のシリアル ポートでは機能しません。
私の例:
std::string port;
int fd
std::vector<std::string>> list;
for(int i = 0; i < 256; ++i)
{
port.clear();
port.append("/dev/ttyUSB");
port.append(std::to_string(i));
fd = open(port.c_str(), O_RDWR | O_NOCTTY | O_DELAY);
if(fd != -1)
{
list.push_back(port);
}
}
ありがとう!