私は、termiosでCプログラムを使って、私のPCとUbuntuとUSBモータコントローラとの間で情報やコマンドを交換しています。リブートせずにUbuntuとC/C++でUSBデバイスを取り外す方法
これはうまく動作し、シリアルポート経由で正常にメッセージを送信できます。しかし、時々、間違った方法でプログラムを閉じたり、何か他のことが起こった場合、私はもうusbデバイスに再接続できません。
デバイスに再度接続できるようにするには、私のPCを再起動して、ubuntuをやり直す必要があります。
私はこの問題を回避し、毎回システムを再起動することなくUSBポートを再び有効にする解決策を見つけることを望みます。
初めて、私はUSBポートを使用していたすべてのプロセス(sudo killall -9 program_name)を強制終了しようとしましたが、ポートはまだブロックされていて再起動する必要があります。
再起動を避けるための解決策を教えてください。 なぜそれが起こるのですか?
私はこのようにUSBポート(は/ dev/ttyACM0)に接続します
handle = open(port.c_str(), O_RDWR |O_NOCTTY | O_NDELAY);
if(handle == RQ_INVALID_HANDLE)
{
cout<<"failed."<<endl;
return RQ_ERR_OPEN_PORT;
}
+1。私のArduino USARTポートで頻繁に起こります。 –
物理的にデバイスのプラグを抜く/プラグを差し込むとどうなりますか?デバイスは新しい '/ dev/xyz'に登録されますが、そのデバイスに接続できるはずです。 –
毎回再起動するのを避けるのが良いでしょう! : –