【发布时间】:2014-04-10 01:48:22
【问题描述】:
我正在使用带有 termios 的 C 程序在我的带有 Ubuntu 的电脑和 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 端口经常发生这种情况。
-
如果您从物理上拔下/插入设备会怎样?我希望该设备将在新的
/dev/xyz上注册,但您应该能够连接到该设备。 -
最好避免每次都重新启动! :(
-
@A.H.如果我物理拔出并再次插入它什么都不会发生:(我仍然需要重新启动才能使用它。dmesg 说:USB 断开连接,地址 5 然后当我再次插入它时:ttyACM0_ USB ACM 设备
标签: c++ c ubuntu serial-port termios