RealSense时常会掉,通过插拔来解决

使用的某型号的RealSense,有时候会掉线,需要重新插拔来解决问题。

考虑用软件写一个重启的控制,以便下次掉线时,运行程序实现重启,无需靠人工手动插拔。

/* usbreset -- send a USB port reset to a USB device */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>

int main(int argc, char **argv)
{
const char *filename;
int fd;
int rc;

if (argc != 2) {
fprintf(stderr, "Usage: usbreset device-filename\n");
return 1;
}
filename = argv[1];

fd = open(filename, O_WRONLY);
if (fd < 0) {
perror("Error opening output file");
return 1;
}

printf("Resetting USB device %s\n", filename);
rc = ioctl(fd, USBDEVFS_RESET, 0);
if (rc < 0) {
perror("Error in ioctl");
return 1;
}
printf("Reset successful\n");

close(fd);
return 0;
}

将该段代码编译成app可执行文件后,运行,发现依然不能解决掉线的问题。

经过查询发现,realsense插拔时,一拔一插后端口号加一了,不再使用原来的端口。

而reset操作实际上操作的还是原来的端口。

应该是realsense本身的驱动有问题,所以reset有问题的这个端口,并不能解决故障,必须一拔一插,使端口号加1后才能再次使用。

后续继续跟踪该问题。

时间: 2024-10-29 21:49:05

RealSense时常会掉,通过插拔来解决的相关文章

网络游戏中应用可插拔工厂处理消息

嫌翻得不好的去看后面的原文吧 ———————————————————————————————————————————————————————————— 问题 今天的网络多人游戏必须处理大量不同的消息.有标准的消息(创建玩家.删除玩家.聊天等等),也有游戏中特定的消息.所有这些消息都有它们自己的数据项,它们必须能够通过一个连接发送出去并在另一端重新组装.作为网络游戏开发者,你的工作就是梳理一切以便你的游戏能够以一种优雅的方式发送和接收消息. 在C++中最明显的做到这一点方式就是用类来表示不同的消息

C#.NET U盘插拔监控

[1]涉及的知识点 1) windows消息处理函数 ? 1 protected override void WndProc(ref Message m) 捕获Message的系统硬件改变发出的系统消息 2) 硬件信息类 ? 1 DriveInfo [2]核心函数 消息常量: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /// <summary> /// windows消息常量 /// </summary> class CWn

oracle12c新特点——可插拔数据库(Pluggable Database,PDB)

1.    12c PDB新特点的优势 1)    可以把多个PDB集成进一个平台. 2)    可以快速提供一个新的PDB或一个已有PDB的克隆. 3)    通过拔插技术,可以快速把存在的数据库重新部署到一个新平台上. 4)    多个PDB数据库补丁或升级一次完成. 5)    通过把单个PDB拔插到较高版本的不同CDB,可以补丁或升级一个PDB. 6)    从同一个CDB中众多PDB中分离出某个PDB的内容. 7)    分离这些PDB应用管理员的责任. 2.    12c PDB新特

Windows 下编程检测显示器信息及插拔

Windows下提示显示器信息主要通过两个函数实现.一个是EnumDisplayDevices(), 另一个是EnumDisplayMonitors(). EnumDisplayDevices()枚举所有显示设备,而EnumDisplayMonitors枚举的是所有显示器.显示设备和显示器不一样,比如显卡算显示设备,但是不是显示器.具体差别后面会分析.EnumDisplayMonitors()还会枚举出不可见的伪显示器,如果只是想得到实际的显示器数目的话可以用GetSystemMetrics(S

启明开发板测试以太网插拔网线

stm32官方开发板是用PB14连接DP83848的INT管脚 当前,启明DP83848的INT管脚只是上拉了,并没有连接PB14, PB14目前连接的是USB_HS_DM. 要想测试插拔网线,只能自己飞线,同时,USB_HS_DM不能使用. 把板子背面的R59焊掉. R59靠近板子中心的接点,连接,R45靠近dp83848芯片的接点. 原文地址:https://www.cnblogs.com/yanhc/p/8955780.html

Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例参数(ALTER SYSTEM)配置CDB实例参数和配置非CDB实例参数没什么不一样.ALTER SYSTEM命令用来设置初始化参数,而有些数据库配置修改需要用ALTER DATABASE命令.作为一个特权用户登录且连接到根容器时,任何ALTER SYSTEM命令默认都将作用于该根容器.这意味着如下

理解及应用 Oracle 12c 插拔数据库

一.概述 1.Oracle 12c 可插拔数据库体系结构 Oracle 12c 中引入了一个新功能就是Oracle Multitenant,这个功能可以在多租户容器数据库中,创建并维护许多个可插拔数据库.Oracle Multitenant是Oracle企业版中需要额外付费的组件.然而,在所有Oracle版本中都可以在一个可插拔数据库中免费使用它.多租户容器数据库(CDB)是指能够容纳一个或者多个可插拔数据库的数据库.容器是指CDB中的数据文件和元数据的集合.可插拔数据库是指可以通过克隆另一个数

WPF 插拔触摸设备触摸失效

原文:WPF 插拔触摸设备触摸失效 最近使用 WPF 程序,在不停插拔触摸设备会让 WPF 程序触摸失效.通过分析 WPF 源代码可以找到 WPF 触摸失效的原因. 在 Windows 会将所有的 Hid (输入)设备在插拔的时候通过 Windows 消息进行更新设备信息.在触摸的时候,通过一个线程用来收集触摸信息. 本文下面的代码是通过 dnSpy反编译调试. 存在的问题 通过 WPF 的源代码可以发现存在两个问题,两个问题在两个不同的类 在 PenThreadWorker 的 GetPenE

我心中的核心组件(可插拔的AOP)~大话开篇及目录

我心中的核心组件(可插拔的AOP)~大话开篇及目录 http://www.cnblogs.com/lori/p/3247905.html 回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等. 对于以上内容可以说即是一个大餐,又是一个挑战,就让我带着大家去迎接这份挑战吧,呵呵! 可插拔的AOP AOP即面向切面的编程,是指将一个公用的与领域无