私はtermiosを備えたCプログラムを使用して、Ubuntuを搭載したPCと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;
}