linuxのシリアルポートに接続されているすべての接続デバイスを検出する良い方法はありますか?私はC++でプログラミングしていますが、他の例も歓迎しています。C++ linuxはすべてのシリアルポートを検出します
すべてのポートを開こうとするだけで、ポートのリストに追加することができますが、これは本当に良い解決策ではないようです。
devディレクターに入ることができます。シリアルポートが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);
}
}
ありがとう!
シリアルポートの名前は通常「ttyS0」と続きます。 – Hasturkun
これは私にあなたの実際の問題がXであるXY質問の感触を与え、解決策はYだと思うので、Yを尋ねます。なぜシステムのシリアルポートについて知りたいのですか? –
ポートの1つにジグビーデバイスが接続されています。ユーザーフレンドリーにしたいので、ユーザーが選択できるようにすべての可能性をリストしたいと思います。通常、あなたのZigbeeデバイスを接続する場合は、ちょうど1つのポート番号が返されます。 @Hasturkun私の場合、私のシリアルデバイスはUSB接続を使用しているので、それはttyUSB0という名前です。 – Silver