驱动无关的调试软件使用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 结果 ?
如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。...批量输入事务: (1)主机首先发送一个IN令牌包(包含设备地址,端点号)。 (2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误,不做任何响应,主机等待超时。...如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答设备。如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。...对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的,主要是保证数据不能停顿,所以等时传输是不保证数据100%正确的。当数据错误时,不再重传操作。...帧起始包:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。
:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。...如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。...批量输入事务,(1)主机首先发送一个IN令牌包(包含设备地址,端点号),(2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误,不做任何响应,主机等待超时。...如果主机收到设备发送的数据包并解码正确后,使用ACK握手包应答设备。如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。...对于音频或视频设备数据的100%正确性要求不高,少量的数据错误是可以容忍的,主要是保证数据不能停顿,所以等时传输是不保证数据100%正确的。当数据错误时,不再重传操作。
在开发APP通过USB与硬件设备通信的功能时,异常处理是确保功能稳定性和用户体验的关键。以下是非代码层面的异常处理策略和注意事项。...数据接收失败:原因:信号干扰、设备故障、数据格式错误等。处理:请求重发数据或提示用户检查设备状态。数据校验失败:原因:数据损坏、传输错误等。处理:丢弃错误数据并请求重传。...3.设备兼容性异常设备不兼容:原因:设备USB协议不匹配、设备未授权(如iOS的MFi认证)等。处理:提示用户设备不兼容,并提供支持的设备列表。功能不支持:原因:设备缺少某些功能或接口。...系统USB服务异常:原因:系统USB驱动或服务故障。处理:提示用户重启设备或检查系统设置。5.用户操作异常用户误操作:原因:用户错误操作导致连接断开或数据传输失败。处理:提供明确的操作指引和错误提示。...超时处理:设置合理的超时时间,避免长时间等待。总结在APP通过USB与硬件设备通信的开发中,异常处理需要全面考虑各种可能的异常情况,并提供有效的处理策略和用户提示。
需要注意,通过上面的这个方法只能获得hid设备的通知 读写 在开始读写的时候就需要先知道 usb 的 pid 和 vid ,其中 vid 是 Vendor ID,供应商识别码。...数据,超时时间,写入的长度。...返回的是错误代码,使用下面代码可以判断是否写入成功 if (writer.Write(sejDqhaquwy, 2000, out var transferLength) == ErrorCode.Success...读取数据存放的数组,超时时间,读取到的长度。...,以避免陈旧错误知识的误导,同时有更好的阅读体验。
事务处理 IN事务处理:数据被无错误地接收;(主机发送ACK包) 数据接收的时候有错误; (没有握手包) 目标设备暂时不能返回数据;(USB设备返回NAK包) 错误状态被清除之前...OUT事务处理:数据被无错误地发送;(USB设备返回ACK包) 数据发送出错; (没有握手包) 目标设备暂时不能接收数据;(USB设备返回NAK包) 错误状态被清除之前,...错误恢复 信息包错误检查; 错误EOP; 总线超时(没有响应); 数据触发器错误检查; 串扰---在时间片结束之后发年事务处理; LOA---总线活动丢失。...三种类型的包错误:包ID(PID);CRC;位填充错误。发生以上错误,接收方忽略这个信息包,并且不会返回一个信息包。...错误的EOP:如果接收方在发送方实际完成传输之前检测到包的结束(EOP)。错误的EOP往往会导致一个CRC错误。 数据触发出错:数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步。
接收器可以发现各种数据接收错误,如:数据溢出错误、奇偶错误、帧的错误和断点条件,其中每一个都可在寄存器中置一个错误标志位。...(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设备进行数据的收发。
需要注意,通过上面的这个方法只能获得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...读取数据存放的数组,超时时间,读取到的长度。
接收方发现后 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设备控制器的中断处理过程和数据接收过程
USB主机从总线上的某个USB设备接收一个数据包的过程。...【正常】的输入事务处理 【设备忙】时的输入事务处理 【设备出错】时的输入事务处理 2.2. 输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。...3.1.2 数据阶段 根据数据阶段的数据传输的方向,控制传输又可分为3种类型: 控制读取(读取USB描述符) 控制写入(配置USB设备) 无数据控制 数据传输阶段:用来传输主机与设备之间的数据...控制写入 是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息,该过程如下的图【Control Wirte】所示。对每一个数据信息包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去。...最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。
Functions Functions为系统提供了发送或接收数据和控制信息的功能。每个功能都包含描述设备功能和资源要求的配置信息。...中断传输可用于定期发送数据的地方,例如用于状态更新。 同步传输传输实时数据,例如音频和视频。它们具有固定带宽,但没有错误检测。 批量传输可用于时间不重要的数据发送,例如打印机。...等时端点数据的最大数据包大小为: 全速最大1023字节。 高速最大1024字节。 同步传输没有错误检测。电气传输中的任何错误均无法纠正。同步传输也受定时抖动的影响。...默认设置端点0用作控制传输端点,其他端点必须在设备被主机配置后才能使用。 端点可以描述为数据源或接收器,并且仅存在于USB设备中。可以从USB主机接收或等待将其存储在端点上的数据。...由于程序无法自由访问USB总线(USB总线由USB主机控制),因此必须将返回数据写入IN端点1。IN端点1中的数据将保留在那里,直到主机向端点1发送一个IN数据包以请求数据为止。
USB主机从总线上的某个USB设备接收一个数据包的过程。...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。...4.1.2 数据阶段 根据数据阶段的数据传输的方向,控制传输又可分为3种类型: 控制读取(读取USB描述符) 控制写入(配置USB设备) 无数据控制 数据传输阶段:用来传输主机与设备之间的数据。...控制写入 是将数据从主机传到设备上,所传的数据即为对USB设备的配置信息,该过程如下的图【Control Wirte】所示。对每一个数据信息包而言,主机将会送出一个OUT令牌信息包,表示数据要送出去。...最后,设备将以下列方式加以响应:当数据已经正确接收时,设备送出ACK令牌信息包;当设备正在忙碌时,设备发出NAK握手信息包;当发生了错误时,设备发出STALL握手信息包。
领取专属 10元无门槛券
手把手带您无忧上云