我使用termios的C程序在我的電腦與Ubuntu和USB電機控制器之間交換信息和命令。如何在Ubuntu和C/C++下拔出USB設備而不重新啓動
它工作的很好,我能夠通過串口成功發送消息;但是,有時會發生如果我以錯誤的方式關閉程序或發生其他事情,我無法再重新連接到我的USB設備。
爲了能夠再次連接到設備,我必須重新啓動我的電腦,並重新啓動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端口上。 – 2012-03-10 10:29:57
如果您物理拔下/插入設備會發生什麼?我希望,該設備將被註冊在一個新的'/ dev/xyz'上,但你應該能夠連接到該設備。 – 2012-03-10 10:33:56
這將是很好,避免每次重新啓動! :( – 2012-03-10 10:34:03