MCU直连CDC设备实战:CH32V307 USB Host枚举与批量收发
简介这份资料面向嵌入式开发者与USB协议学习者聚焦MCU作为USB Host识别并驱动CDC类设备这一实际难题帮助打破传统RS232接口在嵌入式板卡上的技术壁垒。内容从插入检测、总线复位、NRZI编码与同步域讲起逐步拆解SOP/EOP、PID类型、帧号域与标准请求结构并结合CH32V307主板实验平台演示以0地址获取设备描述符、设置地址、获取配置与接口端点描述符的完整通信流程配合Bus Hound、SSCOM、DSView与USB Packet viewer等软硬件工具进行抓包与时序分析。资源包共1个PDF文件大小约4.12MB内容为原创整理的协议分析与实验记录结构紧凑、知识点密集。目前已有2654人学习下载适合希望深入理解USB Host通信流程、掌握CDC设备枚举与数据交互细节的开发者参考可作为项目开发中的协议速查与排错思路来源。1. 从 RS232 到 USB Host为什么 MCU 直连 CDC 设备值得啃很多做嵌入式的人都有过这种经历手头一台仪器说明书上写着串口通信拆开一看 DB9 已经换成了 USB 口芯片是 FT232 或者 CP2102 这类串口转 USB 桥。接电脑一切正常插上板子就傻眼——MCU 的 USB 口要么只能做 Device要么 Host 端跑不起来设备枚举都过不去。问题的根子在于PC 端有完整的 USB Host 协议栈和 CDC 类驱动而大多数 MCU 的 USB Host 库只给了最基础的枚举流程CDC 类设备的识别和批量端点通信得自己补。这份资料围绕的就是这件事用 CH32V307 做主控USB Host 端识别 CDC 设备完成双向数据收发。它把 USB 协议从插入检测、NRZI 编码、包结构、PID 类型一路拆到标准请求和描述符解析再配上逻辑分析仪和 Bus Hound 的实际抓包数据最后落到串口助手 A 发 B 收的验证。适合已经能跑通 USB Device 但没碰过 Host 的嵌入式工程师也适合想搞明白 USB 枚举底层细节的从业者。啃完它至少能自己写一套 CDC Host 驱动不再依赖现成库。2. USB Host 枚举 CDC 设备的协议底座从 D 上拉到描述符解析2.1 插入检测与总线复位D 上拉电阻决定了设备速度USB Host 识别设备的第一步不是软件是硬件电平。逻辑分析仪抓到的波形很直白插入前 D 和 D- 都是低电平设备插入后 D 被上拉电阻拉高D- 保持低。主机看到这个变化就知道有设备进来了。这里有个选型上的分水岭——D 上拉对应高速或全速设备D- 上拉对应低速设备。CDC 类设备基本都是全速或高速所以 D 上拉是常态。主机检测到插入后不会立刻开始正常通信而是先复位。USB 协议规定 D 和 D- 同时拉低 10ms 以上代表总线复位。虽然 USB 是差分信号但复位阶段可以用单端方式控制。复位之后设备地址归零主机以 0 地址开始第一次握手。这个流程在 CH32V307 的 Host 库里对应的是端口状态机和复位时序控制如果复位时间不够 10ms设备可能不响应这是最常见的翻车点之一。2.2 NRZI 编码与同步域没有时钟线怎么恢复时钟USB 只有 D 和 D- 两根数据线没有独立的时钟信号。时钟恢复靠的是 NRZI 编码加同步域。NRZI 的规则是遇 1 不翻转遇 0 翻转。但连续多个 1 会导致电平长时间不变接收端没法采样所以协议规定连续 6 个 1 之后强制插入一个 0强制产生一次翻转。同步域是每个包的头部低速和全速设备的同步域固定为 0000 0001高速设备是 31 个 0 后面跟一个 1。主机通过同步域的翻转模式来锁定采样频率。这个机制在写 Host 驱动时通常由硬件 PHY 处理但调试时如果发现包解析错位第一件事就是查同步域有没有被正确识别。CH32V307 的 USB HS 内部自带 PHY这部分基本不用操心但用 FS 口接高速设备时要注意速度匹配。2.3 包结构与 PIDSOP、EOP 和四类令牌USB 通信以包为单位所有包都由主机发起。总线空闲时 D 高、D- 低驱动到相反状态就是 SOP。EOP 是 D 和 D- 同时拉低并保持两个 bit 时间。PID 紧跟在同步域之后由 4 位类型字段和 4 位校验字段组成校验字段是类型字段的补码。PID 分四类令牌类包括 SETUP、SOF、OUT、IN数据类包括 DATA0、DATA1握手类包括 ACK、NACK、STALL特殊类包括 PRE、ERR。CDC 设备枚举过程中SETUP 包用来发标准请求IN 包用来读描述符OUT 包用来设地址ACK 用来确认。理解 PID 类型是看懂 Bus Hound 抓包数据的前提不然满屏的十六进制根本不知道哪包是干什么的。2.4 标准请求与描述符第一包只要 8 字节主机第一次以 0 地址发 SETUP 包数据是80 06 00 01 00 00 04 00。拆开看80是 bmRequestTypeD7 为 1 表示设备到主机D6-5 为 0 表示标准请求06是 GET_DESCRIPTOR0100是 wValue表示设备描述符0040是 wLength表示只要 8 字节。设备返回的 IN 数据是12 01 00 02 00 00 00 08其中12是长度01是描述符类型0200表示设备是 CDC 类。主机拿到这 8 字节后不会继续读而是再复位一次然后发 SET_ADDRESS 把设备地址从 0 改成 18。之后主机重新发 GET_DESCRIPTOR这次 wLength 是1200读完整的 18 字节设备描述符。返回数据里能看到 VID 是0403PID 是6001这是典型的 FT232 芯片标识。再往后是获取配置描述符、接口描述符和端点描述符配置描述符里最大功率 44mA一个接口两个端点IN 端点 81 最大包 64 字节OUT 端点 02 最大包 64 字节都是批量传输。这套流程在 CH32V307 上实现时关键是把标准请求结构体填对。bRequestType、bRequest、wValue、wIndex、wLength 五个字段一个都不能错尤其是 wLength 在第一次读设备描述符时必须是 8写多了设备可能直接 STALL。3. 在 CH32V307 上跑通 CDC Host枚举、配置与批量收发3.1 硬件平台与工具链为什么选 CH32V307CH32V307 自带两路 USB一路 FS 一路 HSHS 内部集成 PHY 并支持 OTG。做 Host 实验时可以直接对接 CDC 设备不需要外挂 PHY 芯片省了不少事。软件工具方面Bus Hound 用来在 PC 端解包对比Sscom 串口工具用来配置和读写数据DSView 逻辑分析仪抓时序USB Packet Viewer 做硬件抓包。这套组合的好处是软硬结合协议层和物理层能对照着看。开发环境用 MounRiver Studio 或者基于 RISC-V 的工具链都行关键是把 USB Host 库和 CDC 类驱动加进工程。CH32V307 的官方例程里有 Host 枚举的基础代码但 CDC 类的批量端点通信需要自己补。常见做法是在枚举完成后根据接口描述符里的端点地址和传输类型注册对应的端点回调。3.2 枚举流程代码实现从端口复位到获取配置描述符下面这段代码展示的是 Host 端枚举的核心步骤基于 CH32V307 的 USB Host 库结构整理// USB Host 端口初始化与设备检测 void USB_Host_Init(void) { RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USBHS, ENABLE); USBHS_Host_Init(host_cb); // 初始化 Host 回调结构体 USBHS_Host_Enable(); // 使能 Host 模式 } // 设备连接回调触发枚举 void On_Device_Connect(uint8_t port) { // 等待 D 上拉稳定典型 100ms Delay_Ms(100); // 发起总线复位保持 10ms 以上 USBHS_Host_Reset(port); Delay_Ms(15); // 复位后以 0 地址获取 8 字节设备描述符 USB_Get_Device_Descriptor_8(port); } // 获取 8 字节设备描述符 void USB_Get_Device_Descriptor_8(uint8_t port) { uint8_t setup_pkt[8] {0x80, 0x06, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00}; USBHS_Host_SendSetup(port, setup_pkt); // 等待 IN 数据解析 bDeviceClass // 若为 0x02 则确认 CDC 类 } // 设置设备地址 void USB_Set_Address(uint8_t port, uint8_t addr) { uint8_t setup_pkt[8] {0x00, 0x05, addr, 0x00, 0x00, 0x00, 0x00, 0x00}; USBHS_Host_SendSetup(port, setup_pkt); // 等待 ACK地址生效 } // 获取完整 18 字节设备描述符 void USB_Get_Device_Descriptor_18(uint8_t port) { uint8_t setup_pkt[8] {0x80, 0x06, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00}; USBHS_Host_SendSetup(port, setup_pkt); // 接收 18 字节解析 VID/PID } // 获取配置描述符 void USB_Get_Config_Descriptor(uint8_t port) { uint8_t setup_pkt[8] {0x80, 0x06, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x00}; USBHS_Host_SendSetup(port, setup_pkt); // 多包接收解析接口和端点 }逻辑说明USB_Host_Init完成时钟和 Host 模式初始化On_Device_Connect在检测到设备后先延时再复位延时是为了让上拉电阻电平稳定USB_Get_Device_Descriptor_8发标准请求只读 8 字节目的是快速判断设备类USB_Set_Address把设备地址从 0 改成指定值后续通信都用新地址USB_Get_Device_Descriptor_18读完整描述符拿 VID/PIDUSB_Get_Config_Descriptor读配置描述符wLength 设成 0xFF 是为了让设备返回全部配置信息。参数说明复位保持时间建议 15ms 以上协议要求 10ms留余量第一次读描述符 wLength 必须是 8写多了设备可能返回 STALL设置地址后要等 ACK 再发下一个请求否则设备可能不响应新地址。3.3 配置端点与批量传输IN 和 OUT 端点怎么用枚举完成后从配置描述符里解析出接口和端点信息。CDC 设备通常有一个接口两个批量端点IN 端点地址 0x81OUT 端点地址 0x02最大包 64 字节。配置端点的代码大致如下// 解析配置描述符配置端点 void USB_Config_Endpoints(uint8_t port, uint8_t *config_desc) { uint8_t total_len config_desc[2]; uint8_t offset config_desc[0]; // 配置描述符长度通常 9 while (offset total_len) { uint8_t desc_len config_desc[offset]; uint8_t desc_type config_desc[offset 1]; if (desc_type 0x05) { // 端点描述符 uint8_t ep_addr config_desc[offset 2]; uint8_t ep_attr config_desc[offset 3]; uint16_t ep_mps config_desc[offset 4] | (config_desc[offset 5] 8); if ((ep_attr 0x03) 0x02) { // 批量传输 if (ep_addr 0x80) { // IN 端点用于设备到主机 USBHS_Host_OpenEP(port, ep_addr, ep_mps); } else { // OUT 端点用于主机到设备 USBHS_Host_OpenEP(port, ep_addr, ep_mps); } } } offset desc_len; } } // 主机发送数据到 CDC 设备 void CDC_Host_Send(uint8_t port, uint8_t *data, uint16_t len) { USBHS_Host_WriteEP(port, 0x02, data, len); // OUT 端点 0x02 // 等待 ACK } // 主机从 CDC 设备读数据 void CDC_Host_Recv(uint8_t port, uint8_t *buf, uint16_t *len) { USBHS_Host_ReadEP(port, 0x81, buf, len); // IN 端点 0x81 }逻辑说明USB_Config_Endpoints遍历配置描述符找到端点描述符后判断传输类型批量传输的 attr 低两位是 0x02CDC_Host_Send往 OUT 端点写数据CDC_Host_Recv从 IN 端点读数据。参数说明端点最大包 64 字节单次传输不能超过这个值超过要分包IN 端点读数据时要先确认设备有数据否则可能读到 NACK。3.4 验证方法串口助手 A 发 B 收验证环节用两个串口助手。助手 A 接在 CDC 设备的串口端助手 B 接在 CH32V307 的调试串口或者另一路 USB 转串口上。助手 A 发数据CH32V307 的 Host 端通过 OUT 端点收到后再通过 IN 端点发回设备设备转成串口数据给助手 B。反过来助手 B 发助手 A 收。双向都通说明 Host 端 CDC 驱动跑通了。这个验证方法的好处是直观不需要额外的协议分析工具就能判断数据通路是否正常。如果单向不通先查端点地址有没有搞反IN 和 OUT 的方向在描述符里是固定的写反了数据发不出去。4. 避坑与排查CDC Host 调试中最容易翻车的五个点4.1 设备插入后无反应D 电平没变化现象设备插上 CH32V307 的 USB 口Host 端检测不到连接逻辑分析仪看 D 一直是低电平。原因设备端的 D 上拉电阻没有供电或者 Host 端的 VBUS 没有输出。CDC 设备通常需要 Host 提供 5V VBUS 才能工作如果 CH32V307 的 Host 口没有使能 VBUS 输出设备根本不上电。解决检查 Host 端 VBUS 使能引脚确认 5V 输出正常。CH32V307 的 USB HS 口通常需要外部 MOSFET 控制 VBUS软件里要把对应的 GPIO 拉高。4.2 枚举到一半卡死Bus Hound 看到 STALL现象主机发 GET_DESCRIPTOR 后设备返回 STALL枚举流程中断。原因wLength 设置不对。第一次读设备描述符时 wLength 必须是 8如果写成 18 或者 0xFF部分 CDC 设备会直接 STALL。另外 wValue 的高字节表示描述符索引写错了也会 STALL。解决严格按协议来第一次读设备描述符 wLength 固定 8wValue 固定 0x0100。设置地址后读完整描述符 wLength 用 0x1200。4.3 批量传输数据丢包IN 端点读不到数据现象主机往 OUT 端点发数据正常但从 IN 端点读数据时经常读到空或者 NACK。原因IN 端点的数据是设备主动上传的主机不能随时读。如果设备还没准备好数据主机读操作会收到 NACK。另外批量传输的 DATA0/DATA1 翻转如果出错设备会丢弃数据包。解决读 IN 端点前先确认设备有数据可以通过 CDC 的串口数据量判断。CH32V307 的 Host 库通常有端点中断在中断里处理 IN 数据比轮询可靠。DATA0/DATA1 翻转由硬件处理但要注意端点配置时不要关掉翻转检测。4.4 设置地址后设备不响应新地址现象SET_ADDRESS 请求发出后设备 ACK 了但后续用新地址通信时设备不响应。原因SET_ADDRESS 的 ACK 是在旧地址0 地址上返回的设备需要一点时间切换地址。如果主机在 ACK 后立刻用新地址发请求设备可能还没切换完。解决SET_ADDRESS 之后加一个短延时典型 2ms 到 5ms再发下一个请求。另外确认 SET_ADDRESS 的 wValue 低字节是新地址高字节是 0。4.5 逻辑分析仪抓不到高速包现象用 DSView 抓 USB HS 信号时波形混乱解码不出包。原因逻辑分析仪的采样率不够。USB 高速是 480Mbps逻辑分析仪至少需要 1GSa/s 以上的采样率才能抓到有效波形。另外探头接地不好也会导致信号完整性问题。解决抓高速信号用专用 USB 协议分析仪逻辑分析仪抓全速12Mbps信号就够了。如果只有逻辑分析仪把设备降到全速模式再抓。5. 进阶技巧用 Bus Hound 对照抓包快速定位描述符解析错误枚举跑通之后最耗时间的往往不是通信本身而是描述符解析出错导致端点配置不对。我的习惯是 PC 端开 Bus Hound 抓一份正常枚举的完整数据MCU 端用 USB Packet Viewer 抓一份自己的枚举数据两份对照着看。重点看三个地方设备描述符的 bDeviceClass 是不是 0x02配置描述符的 bNumInterfaces 是不是 1端点描述符的 bmAttributes 低两位是不是 0x02。对照的时候有个技巧Bus Hound 的十六进制数据按包分组每个包前面有 PID 类型标注。MCU 端的抓包数据如果 PID 类型对不上说明 Host 库的包组装有问题。常见的是 SETUP 包的 PID 应该是 0x2DSETUP 的 PID 编码如果抓出来是 0x69IN 的 PID那肯定是包类型搞错了。另外CDC 设备的接口描述符里通常有一个类特定描述符长度 5 字节类型 0x24子类型 0x00 表示 Header Functional Descriptor。这个描述符在解析配置描述符时容易被忽略如果跳过它后面的端点描述符偏移量就算错了。我一般会在解析循环里加一个判断遇到 0x24 类型的描述符直接跳过不参与端点解析。// 解析配置描述符时跳过类特定描述符 while (offset total_len) { uint8_t desc_len config_desc[offset]; uint8_t desc_type config_desc[offset 1]; if (desc_type 0x05) { // 端点描述符处理端点 } else if (desc_type 0x24) { // 类特定描述符跳过 } else if (desc_type 0x04) { // 接口描述符记录接口号 } offset desc_len; }这段代码的关键是offset desc_len不能漏每个描述符的长度字段决定了下一个描述符的位置。如果 desc_len 读成 0就会死循环所以解析前要先判断 desc_len 是否大于 0。从那以后我每次调 USB Host都强制先跑一遍 Bus Hound 对照确认描述符解析和 PID 类型都对得上再往下写业务逻辑。这个习惯帮我省了很多来回改代码的时间。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

2024网络安全产业人才发展报告深度拆解:岗位画像、薪资对照与AI技能缺口

2024网络安全产业人才发展报告深度拆解:岗位画像、薪资对照与AI技能缺口

简介:《2024年网络安全产业人才发展报告》面向政府决策者、企业管理者、教育机构以及网络安全从业者和学生,系统梳理全球与国内网络安全产业的人才供需现状,帮助读者把握行业趋势、规划职业路径与制定用人策略。报告涵盖从业人员画像、薪酬水…

2026/10/14 16:08:13 阅读更多 →
KRONE农业机械来料检验案例_大型部件为什么不再搬到质检区

KRONE农业机械来料检验案例_大型部件为什么不再搬到质检区

​农业机械制造商 KRONE 使用安宝特合作伙伴 Visometry 拓影 Twyn,把部分大型来料的视觉质量检查直接放在到货位置完成,无需为了常规 CAD 实物核对,先将工件统一搬运到专门质检区。​质检人员通过平板电脑将 3D CAD 设计状态与现场实物叠加&a…

2026/10/14 16:08:13 阅读更多 →
UK-5099在肿瘤代谢与线粒体功能研究中的应用指南

UK-5099在肿瘤代谢与线粒体功能研究中的应用指南

1. 项目概述UK-5099作为一种线粒体丙酮酸载体(MPC)抑制剂,近年来在肿瘤代谢研究和线粒体功能调控领域引起了广泛关注。这个实验指南旨在为科研人员提供从基础原理到实操细节的完整解决方案,帮助研究者快速掌握UK-5099在肿瘤微环境…

2026/10/14 16:07:13 阅读更多 →

最新新闻

蓝鲸智云配置平台 bk-cmdb「更新模型定义」接口(update_object)实战指南

蓝鲸智云配置平台 bk-cmdb「更新模型定义」接口(update_object)实战指南

后端企业应用运维 【免费下载链接】bk-cmdb 蓝鲸智云配置平台(BlueKing CMDB) 项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb 点击查看 免费下载 本篇指南面向需要调用蓝鲸智云配置平台(bk-cmdb,BlueKing CMDB) OpenAPI …

2026/10/14 16:56:10 阅读更多 →
Android系统中LPC2026幽灵代号识别与真实硬件穿透指南

Android系统中LPC2026幽灵代号识别与真实硬件穿透指南

1. 项目概述:LPC2026不是芯片,而是Android系统中一个被误传的“幽灵代号”刚看到“LPC2026技术-Android”这个标题时,我第一反应是翻出NXP官网查LPC系列ARM7/ARM9芯片手册——结果当然什么都没找到。LPC2000系列最晚止步于LPC2478&#xff08…

2026/10/14 16:56:10 阅读更多 →
FreeCAD中文教程:从参数化建模到3D打印的完整工作流指南

FreeCAD中文教程:从参数化建模到3D打印的完整工作流指南

简介:FreeCAD 中文翻译教程是一份面向零基础用户的完整入门手册,内容源自官方 FreeCAD 文档 wiki,解决了英文教程阅读门槛高、新手难以梳理知识体系的问题。手册采用循序渐进的组织方式,通过参数化建模与传统造型的对比&#xff0…

2026/10/14 16:56:10 阅读更多 →
ECCV 2020点云研究全景:方法范式、复现要点与选型指南

ECCV 2020点云研究全景:方法范式、复现要点与选型指南

1. 为什么值得回头再看 ECCV 2020 的点云研究如果你这两年一直在做3D视觉相关的工程落地,大概率会有一种感受:点云这个方向从2019年开始进入了一个明显的加速期,而ECCV 2020恰好是这波加速中最密集的一次集中展示。我最初整理这批文章的时候&…

2026/10/14 16:56:10 阅读更多 →
GCC编译全链路:从单文件到多文件工程的构建指南

GCC编译全链路:从单文件到多文件工程的构建指南

我见过不少从入门到放弃的C/C程序员,他们卡住的第一个“非语法”门槛,往往不是指针,也不是内存泄漏,而是某一天工程从一个 .c 文件变成了五六个 .c 文件,编译命令从一行gcc test.c -o test变成了一长串需要手动指定的 …

2026/10/14 16:56:10 阅读更多 →
libIEC61850 1.6.2:开源 IEC 61850 MMS/GOOSE/SV 协议栈的功能全貌、构建流程与集成实践

libIEC61850 1.6.2:开源 IEC 61850 MMS/GOOSE/SV 协议栈的功能全貌、构建流程与集成实践

通信嵌入式工业制造 【免费下载链接】libiec61850 Official repository for libIEC61850, the open-source library for the IEC 61850 protocols 项目地址: https://gitcode.com/gh_mirrors/li/libiec61850 点击查看 免费下载 libIEC61850 是一个以 C99 编写的开源…

2026/10/14 16:55:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →