日期:2014-05-16  浏览次数:20955 次

摄像头热插拔 不用重启问题
大家好,
本人在做一个项目,用v4l2采集图像 ,播放图像,中间加点图像处理,就那么简单。
但想当usb摄像头摆出或移除的时候,程序能等待,当usb摄像头再次插入时,程序继续,且依然采集图像。
这几天用udev弄了蛮久,开了两个线程,当设备被移除的时候,udev检测到remove video0,然后等待,当udev检测到add video0的时候,重新open 设备 video0,但都得不到效果,请大家给点思路。
谢谢

------解决方案--------------------
我这两天也再弄一个类似的问题,也是热插拔一个usb设备,希望再次插上时,能直接用而不需要重启,目前也没有找到有效的方法。
目前的思路就是起一个线程,正常的时候就去执行正常的flow,当usb被拔掉,会一直去尝试重连,直到usb再次插上
------解决方案--------------------
在我这个问题里面,当USB插上的时候,会一直去call tcgetattr这个func,如果返回值是0,说明没有被拔掉,那么就去read usb里面的数据;如果返回值不是0,就说明被拔掉了,那么接下来就会去一直尝试重连,直到usb再次插上