我正在使用带有 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;
}