- 基于PyUSB的替代版本 Zynalog ADC数据读取器 - Python版本 ======================================== 跳过USB检测,直接尝试连接设备..._usb_device = None # PyUSB设备对象 self._vendor_id = None # 厂商ID self...._product_id = device.idProduct return True return False 使用PyUSB的usb.core.find(),更灵活的字符串匹配策略...通信异常 │ │ - 设备未找到 │ │ - 通信超时 │ │ - 权限不足...错误代码: {rc}") print("可能的原因:") print("1. 设备未正确连接") print("2. 驱动程序问题") print("3.
驱动无关的调试软件使用bus hound WinDriver WinDriver经常与Jungo connectivity联系在一起,安装了WinDriver驱动的usb device在设备管理器中也显示为...将usb device连接上电脑,使用WinDriver给设备安装驱动。 在python中使用ctypes调用上文中的dll,完成调用过程。...PyUsb pyusb是一个python库,可以方便地使用python操作usb设备。...pyusb的数据传输流程如下: python pyusb pyusb backend usb device 很明显可以看出省略了dll,大大减少了代码量。...编写python脚本,可以参考官方教程 缺点: windriver有一个可视化的调试工具,可以单独发送接收数据以确定usb device是否正常,pyusb暂时没有找到。
本文由腾讯云+社区自动同步,原文地址 http://blogtest.stackoverflow.club/109/ 背景 在调试pyusb时,发现直接python scripts.py可以正常运行,但是打包成.../scripts.exe运行就失败,提示错误是 usb.core.NoBackendError: No backend available....分析 这里出现的错误NoBackendError实际上是由于pyusb无法找到libusb*.dll引起的。手动将DLL复制到dist /project文件夹修复了该问题,应用程序将按预期工作。...看看hook-usb.py,似乎hook打算将DLL添加到二进制文件中,但实际上没有这样做,因为我们的目标DLL安装在C:\Windows\System32,而WinExcludeList排除了C:\Windows...在_resolveCtypesImports()``(hook-usb.py第45行)中找到正确的路径后,该排除路径生效,它通过dylib.py中的include_library()使用WinExcludeList
只有控制端点是双向的。 Interrupt Transfers: 由于 USB 协议是主机主导的,设备端的中断信息需要被及时响应,就要用到中断传输,其提供了有保证的延迟以及错误检测和重传功能。...以 Python 的封装 pyusb 为例,官方给的示例如下: import usb.core import usb.util # find our device dev = usb.core.find...该驱动实现了一个简单的 USB 设备,包含 2 个配置描述,各包含 1 个功能,分别是 sink 和 loopback,前者接收数据并返回 0,后者接收数据并原样返回: drivers/usb/gadget...新建一个 gadget,并写入实际的设备描述 mkdir $CONFIGFS_HOME/mydev # 创建设备目录后,该目录下自动创建并初始化了一个设备模板 cd $CONFIGFS_HOME/mydev...参考资料 USB in a NutShell USB and the Real World pyusb/pyusb Linux USB API Kernel USB Gadget Configfs Interface
故障排除 文章目录 故障排除 错误代码 常见的 Axis 错误 常见的 Motor 错误 常见的 Encoder 错误 常见的 Controller 错误 USB 连接问题 固件问题 执行`make`时无法构建固件...运行`make flash`时无法烧录固件 其他可能不会产生错误代码的问题 电机在高速旋转时会中断或失控(ie: > 5000 RPM) 静止时电机振动或发出噪音 电机位置控制出现过冲或在目标位置震荡...如果看到电压降到〜8V以下,则将触发此错误。 即使是相对较小的电动机也可能会消耗几kW的瞬时功率,因此,除非您的电源非常大或使用电池,否则在执行具有高电流限制的高速运动时可能会遇到此错误。...USB 连接问题 尝试将ODrive、PC、odrivetool关闭然后再打开 确保您使用的是最新的固件和python工具版本 Linux: 输入 lsusb 来显示出所有USB设备。...启动参数 运行 PYUSB_DEBUG=debug odrivetools 来输出更多日志信息 如果您是开发人员,则可以使用Wireshark捕获USB通信数据 换一根USB连接线,某些USB线只具有充电功能而不具备通讯功能
确认已接收到无错误的数据 由接收方发送 特殊数据包 支持多种不同的速度 由主机传输给集线器设备 如上所述,数据包中的任何信息(除了 PID 之外)均是可选的。...USB数据数据包 在每一个数据数据包成功传输后,主机和设备将对数据切换进行相应的更新。数据切换的优点在于它可作为附加的错误检测方法。...如果接收到的数据包 ID 同预期的不一样,则设备可判断传输中发生了错误,并可能进行适当的处理。使用数据切换的示例是 ACK 在发送后,仍未能收到时。...(仅 HS) ERR:由集线器返回的数据包,用于报告分割数据操作中发生了错误。(仅 HS) PING:接收到 NYET 握手数据包后,检查批量传输 OUT 或控制写入的状态。(仅 HS) ?...OUT/写入/下行框图 在下图中,主机将发送 OUT 令牌数据包和 DATA0 数据包,但会接收到设备所发送的 NAK 信号。然后,主机会重新尝试发送数据。
大家好,这周我出差~~ 之前在调试python 串口的时候也费了一些功夫,首先是搭建Python串口环境;之后是在网上找的Demo无法运行,最后是看官网的资料才入的门。。。 可爱的图标~~ ?...由于我使用的是ubuntu系统,在使用官方Demo前,先查看ubuntu系统是否识别Usb设备,使用ls -l /dev/ttyUSB* 命令查看是否识别Usb设备。如图: ? 2....float(result[0]) #to number print(var * var) print(splitstr 简单对程序作出说明: 向另一端写数据,延时1秒,读取另一端所写入的字符串...,由于设置超时时间为1秒,所以1秒过后,程序会继续执行,如果像2中未设置超时时间,则程序阻塞。...程序继续执行,用逗号分割字符串并存储,之后将第一个字符串转为数字,输出其平方的结果,输出整体接收到的字符串,程序继续循环。 程序执行结果: ? ubuntu 结果 ?
(0x5A) 设备→主机 忙/暂无法接收 “稍等再来” STALL(0x1E) 设备→主机 错误/需要干预 “有问题需处理” 六、实际传输示例:鼠标移动数据流 场景:鼠标向右移动100像素 时间轴分析...USB错误处理流程: 检测到数据错误: 1....接收方不发送ACK 3. 发送方等待超时(微秒级) 4. 自动重传(最多3次) 5....协商替代模式(视频/音频) 十二、调试与问题排查 常见通信问题分析: 现象 可能原因 排查方法 设备无法识别 枚举失败 检查描述符、驱动 传输速度慢 批量传输被NAK 减少同时传输设备 数据传输错误 CRC...,即插即用 关键设计哲学: 主机中心制:主机控制一切,设备被动响应 时间分片:微帧/帧结构保证多设备共享带宽 错误容忍:多重校验与重试机制保障数据可靠 向后兼容:新旧协议和谐共存 USB通信机制就像一座精心设计的立交桥系统
如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。...批量输入事务: (1)主机首先发送一个IN令牌包(包含设备地址,端点号)。 (2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误,不做任何响应,主机等待超时。...如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答设备。如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。...对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的,主要是保证数据不能停顿,所以等时传输是不保证数据100%正确的。当数据错误时,不再重传操作。...帧起始包:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。
链路监督超时是指在一定时间内如果没有接收到来自对端设备的数据包,则认为链路已经丢失,设备将断开连接。这个命令对于管理蓝牙连接的稳定性和资源非常关键。...在 HCI_Write_Link_Supervision_Timeout 命令中用于指定哪个连接的链路监督超时值将被写入。 范围:从 0x0000 到 0x0EFF。...命令传输阶段 发送命令:主机通过HCI接口(如UART、USB等)将构建好的命令数据包发送给蓝牙控制器。 4.3. 命令处理阶段(控制器端) 接收并解析命令:控制器接收命令包,并检查其格式是否正确。...接收并处理返回结果: 主机接收返回包,检查Status参数以确定命令是否成功。 根据Status值,主机执行相应的后续操作,如记录日志、更新状态或报告错误。 4.5....未及时处理该事件可能导致系统无法得知命令执行结果,影响后续操作。 在实时性要求较高的应用中,需特别注意事件处理的及时性。 6.4. 兼容性考虑 不同蓝牙设备和芯片组对命令的实现细节可能存在差异。
在开发APP通过USB与硬件设备通信的功能时,异常处理是确保功能稳定性和用户体验的关键。以下是非代码层面的异常处理策略和注意事项。...数据接收失败:原因:信号干扰、设备故障、数据格式错误等。处理:请求重发数据或提示用户检查设备状态。数据校验失败:原因:数据损坏、传输错误等。处理:丢弃错误数据并请求重传。...3.设备兼容性异常设备不兼容:原因:设备USB协议不匹配、设备未授权(如iOS的MFi认证)等。处理:提示用户设备不兼容,并提供支持的设备列表。功能不支持:原因:设备缺少某些功能或接口。...系统USB服务异常:原因:系统USB驱动或服务故障。处理:提示用户重启设备或检查系统设置。5.用户操作异常用户误操作:原因:用户错误操作导致连接断开或数据传输失败。处理:提供明确的操作指引和错误提示。...超时处理:设置合理的超时时间,避免长时间等待。总结在APP通过USB与硬件设备通信的开发中,异常处理需要全面考虑各种可能的异常情况,并提供有效的处理策略和用户提示。
:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。...如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。...批量输入事务,(1)主机首先发送一个IN令牌包(包含设备地址,端点号),(2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误,不做任何响应,主机等待超时。...如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答设备。如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。...对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的,主要是保证数据不能停顿,所以等时传输是不保证数据100%正确的。当数据错误时,不再重传操作。
事务处理 IN事务处理:数据被无错误地接收;(主机发送ACK包) 数据接收的时候有错误; (没有握手包) 目标设备暂时不能返回数据;(USB设备返回NAK包) 错误状态被清除之前...OUT事务处理:数据被无错误地发送;(USB设备返回ACK包) 数据发送出错; (没有握手包) 目标设备暂时不能接收数据;(USB设备返回NAK包) 错误状态被清除之前,...错误恢复 信息包错误检查; 错误EOP; 总线超时(没有响应); 数据触发器错误检查; 串扰---在时间片结束之后发年事务处理; LOA---总线活动丢失。...三种类型的包错误:包ID(PID);CRC;位填充错误。发生以上错误,接收方忽略这个信息包,并且不会返回一个信息包。...错误的EOP:如果接收方在发送方实际完成传输之前检测到包的结束(EOP)。错误的EOP往往会导致一个CRC错误。 数据触发出错:数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步。
而且,设置一旦保存,重启后依然生效,具有极强的稳定性。即便员工具备一定的技术知识,也无法绕过这一底层设置来启用USB接口,为数据安全提供了持久且可靠的保障。...二、通过设备管理器临时禁用(灵活可控)在一些临时场景中,比如公开演示时,为了防止观众随意使用U盘拷贝演示资料,需要灵活地限制U盘的使用。此时,通过设备管理器临时禁用USB接口就再合适不过了。...当需要恢复使用时,只需再次右键点击被禁用的设备,选择“启用设备”即可。这种方法灵活可控,能根据实际需求随时切换USB接口的使用状态,满足多样化的场景需求。...USB端口四种管控措施该软件允许管理员对电脑USB端口实施灵活的权限管理,根据岗位或场景灵活配置:禁止U盘使用:彻底封锁所有USB存储设备接入,适用于核心研发或财务等高密级岗位,从物理层杜绝拷贝可能;仅读取...:允许员工从U盘读取资料(如导入客户数据),但禁止向U盘写入任何文件,适合需接收外部资料但严禁外传的岗位;仅写入:允许向U盘写入文件(如交付成果给客户),但禁止读取U盘内容,防止外部病毒或资料混入内网;
需要注意,通过上面的这个方法只能获得hid设备的通知 读写 在开始读写的时候就需要先知道 usb 的 pid 和 vid ,其中 vid 是 Vendor ID,供应商识别码。...UsbEndpointWriter writer = usb.OpenEndpointWriter(WriteEndpointID.Ep01); 先来写入字符串 var str...数据,超时时间,写入的长度。...返回的是错误代码,使用下面代码可以判断是否写入成功 if (writer.Write(sejDqhaquwy, 2000, out var transferLength) == ErrorCode.Success...读取数据存放的数组,超时时间,读取到的长度。
需要注意,通过上面的这个方法只能获得hid设备的通知 读写 在开始读写的时候就需要先知道 usb 的 pid 和 vid ,其中 vid 是 Vendor ID,供应商识别码。...数据,超时时间,写入的长度。...返回的是错误代码,使用下面代码可以判断是否写入成功 if (writer.Write(sejDqhaquwy, 2000, out var transferLength) == ErrorCode.Success...读取数据存放的数组,超时时间,读取到的长度。...,以避免陈旧错误知识的误导,同时有更好的阅读体验。
接收器可以发现各种数据接收错误,如:数据溢出错误、奇偶错误、帧的错误和断点条件,其中每一个都可在寄存器中置一个错误标志位。...(6)UART错误状态FIFO UART有一个错误状态FIFO,用来指出FIFO中的哪个数据在接收时出错,错误中断发生在有错误的数据被读取时。...S3C2410内部也具有IIC总线接口模块,支持一个多主IIC-BUS串形接口,主S3C2410能发送或接收串形数据到从设备,并遵守标准的IIC协议。...USB设备控制器具有以下特点: 是全速USB设备控制器(12Mbps),兼容USB规范1.1 具有用于批量传输的DMA接口 具有集成的USB收发器 具有带FIFO的五个端口: 1个带16字节FIFO的双向控制端口...当目标板上的USB设备初始化完成后,在PC机运行应用程序usbhidio.exe,与目标板的USB设备进行数据的收发。
接收方发现后 4 位不是前 4 位的取反的话, 就认为发生了错误。 2. 令牌包(Token) 令牌类 的 PID ,起 "通知作用 " ,通知谁 ?...Host 和设备都会维护自己的数据包切换机制,当数据包成功发送或者接收时,数据包 类型切换。当检测到对方使用的数据包类型不对时,USB 系统认为发生了错误。...STALL:表示发生了错误,比如设备无法执行这个请求(不支持该断点等待)、断点已经挂起。设备返回 STALL 后,需要主机进行干预才能接触 STALL 状态。 NYET:仅适用于高速设备。...它允许使用具有多种配置的 USB 设备、复合设备和 USB OTG 进行操作。它支持 USB 电源管理。 USBX 为 USB 主机和 USB 设备堆栈提供了大量的 USB 类。..., 实现以下函数:把接收到的数据写入队列。
1:控制器不会更新TRB的HWO位域0:控制器会更新TRB的HWO位域 13:8 使能设备端点的特殊事件DEPEVTEN,写入0关闭。...在接收到数据信息包后,设备端点可返回NYET联络信息,它表明端点接收此数据但没有准备好接收另一数据信息包。当主机认为设备可能准备好的时候,主机可发送PING令牌信息包。...无响应 另一种状态指示类型发生在主机或设备期望接收联络但却没有收到任何信息的情况下。接收端的错误检查发现错误时,就会产生这种响应缺失。...清除端点的DWC3_EP_STALL和DWC3_EP_WEDGE标志,DWC3_EP_WEDGE标志设置时主机无法清除设备端点的stall状态,但设备驱动可以自己清除。...其实最重要的是弄清楚USB设备控制器接收数据和发送数据的流程,发送数据通过usb_ep_queue发送,上面已经介绍过了,但接收数据的流程牵扯到中断处理和中断处理线程,后面专门开一章节介绍USB设备控制器的中断处理过程和数据接收过程