新闻详情

新闻详情

首页 / 资讯中心 / 详情

nRF Connect 蓝牙开发与烧录实战:nRF52840 调试技巧

发布时间:2026/9/28 1:50:12来源:尧图网络
nRF Connect 蓝牙开发与烧录实战:nRF52840 调试技巧
1. 为什么我最终选择了 nRF Connect 这套组合拳搞低功耗蓝牙BLE开发的朋友大概率都经历过这样的场景手里捏着一块 nRF52840 的开发板电脑上装了一堆工具结果连最基本的“让手机搜到我的设备”这一步都要折腾半天。我最早做蓝牙项目的时候用的是某国产芯片的 SDK光是把广播包发出去就花了两天调试基本靠串口打印效率低得让人抓狂。后来换到 Nordic 的 nRF52840配合 nRF Connect 这套工具链整个开发节奏完全变了——手机端实时看广播、连服务、读特征值桌面端一键烧录固件中间几乎不需要反复插拔和重启。这篇文章我想聊的就是这套组合的实际用法用 nRF Connect 手机 App 做蓝牙调试用桌面端工具完成固件烧录。核心关键词就三个nRF Connect、蓝牙开发、烧录。适合谁看如果你正在做 BLE 产品开发或者刚拿到 nRF52840 开发板不知道怎么下手又或者你之前用其他芯片平台想了解 Nordic 这套工具链到底好在哪那这篇内容应该能帮你省下不少踩坑的时间。先说清楚一个基本认知nRF Connect 其实不是单一软件而是一个工具家族。手机端有 nRF Connect for Mobile安卓和 iOS 都有桌面端有 nRF Connect for Desktop里面又包含 Programmer、Bluetooth Low Energy、RSSI Viewer 等多个独立应用。很多人第一次接触会搞混以为是一个软件装完就万事大吉实际上手机端和桌面端各司其职配合起来才完整。手机端负责“看”和“调”桌面端负责“烧”和“测”这个分工逻辑后面我会详细展开。我自己的开发环境是这样的一块 nRF52840 DK 开发板一台 Windows 笔记本一部安卓手机。这个配置基本是入门 BLE 开发的最低门槛不需要额外的调试器因为 DK 板载了 J-Link OB直接 USB 连电脑就能烧录。如果你用的是自定义板或者 nRF52840 模块那就需要外接 J-Link 或者 DAPLink这个后面会单独说。2. 工具链整体设计与选型思路拆解2.1 手机端和桌面端为什么要分开刚接触这套工具的人经常会问为什么不能用一个软件搞定所有事情手机端也能烧录不就行了这个问题背后其实涉及蓝牙开发的一个核心矛盾——调试视角和烧录视角是分离的。手机端 nRF Connect 的价值在于它模拟的是真实用户设备的角色。你的手机蓝牙芯片和用户手机蓝牙芯片是同一套硬件体系用手机去连你的设备看到的就是用户实际会遇到的连接行为。广播间隔、连接参数、服务发现顺序、MTU 协商结果这些在手机端都是一比一还原的。而桌面端工具跑在电脑上电脑的蓝牙适配器跟手机完全不同用它来测连接行为参考价值有限。反过来烧录这件事必须走调试接口SWD手机没有这个物理接口所以烧录天然属于桌面端的活。Nordic 把这两件事拆成两个工具逻辑上是合理的。我刚开始觉得麻烦用久了反而觉得这种分离让每个环节都更专注——调的时候专心调烧的时候专心烧不会互相干扰。2.2 为什么选 nRF Connect 而不是通用蓝牙调试 App市面上蓝牙调试 App 不少比如各种“蓝牙调试助手”类的工具功能看起来也挺全。但实际用下来nRF Connect 有几个点是通用工具替代不了的。第一是协议栈层面的解析深度。通用工具通常只展示服务 UUID 和特征值句柄但 nRF Connect 会直接解析标准服务比如电池服务、设备信息服务、心率服务直接告诉你哪个值是电量、哪个是厂商名称。做 BLE 开发时这个解析能力能帮你快速确认自己的 GATT 表设计是否符合规范。第二是广播数据包的原始解析。nRF Connect 可以把广播包里的 AD Structure 逐条拆开长度、类型、数据一目了然。我调试自定义广播格式的时候就是靠这个功能确认 Manufacturer Specific Data 有没有正确塞进去。第三是日志导出和分享。nRF Connect 支持把连接过程的完整日志导出成文本包括每个操作的耗时和返回码。这个在排查偶发连接失败的时候特别有用你可以把日志发给同事或者贴到论坛上别人能直接看到问题出在哪一步。2.3 桌面端 Programmer 的定位nRF Connect for Desktop 里的 Programmer 应用是我用得最多的烧录工具。它的核心优势是直接支持 Nordic 的 HEX 文件和 DFU 包而且能自动识别板载 J-Link。你插上 DK 板Programmer 里就能看到设备加载 HEX 文件点 Erase Write几十秒就烧完了。相比 nrfjprog 命令行工具Programmer 的图形界面对新手更友好不需要记命令参数。但如果你要做自动化烧录比如产线上批量烧录那还是得回到命令行。我个人的习惯是开发阶段用 Programmer快速迭代做批量测试或者 CI 集成的时候用 nrfjprog 脚本。这里要提一个很多人会忽略的点Programmer 烧录时会同时处理 SoftDevice 和 Application。如果你用的是带 SoftDevice 的协议栈方案比如 S140烧录顺序和地址分配是有讲究的。Programmer 会自动读取 HEX 文件里的地址信息按正确顺序写入不需要你手动指定。但如果你用 nrfjprog 命令行就需要自己确保先烧 SoftDevice 再烧 Application顺序错了设备起不来。3. 核心细节解析与实操要点3.1 nRF Connect 手机端的安装与基础配置安卓端安装 nRF Connect 有两个渠道Google Play 和 Nordic 官网的 APK。国内用户如果 Play 商店不方便可以直接去 Nordic 官网下载 APK 安装包。安装完成后第一次打开它会请求蓝牙权限和位置权限——位置权限是安卓系统扫描 BLE 设备的硬性要求不是 App 的问题必须给。打开后的主界面是扫描页默认会列出周围所有广播中的 BLE 设备。每个设备条目显示名称如果有的话、MAC 地址、RSSI 信号强度和广播间隔。右上角有个扫描开关可以随时启停。这里有个细节nRF Connect 默认是持续扫描模式如果你只想扫一次可以在设置里改成定时扫描省电。扫描列表里每个设备右侧有个箭头点进去就是设备详情页。详情页分几个标签Overview 显示基本信息Advertisement 显示原始广播数据GATT 显示服务列表连接后才可用Bond 显示配对信息。我调试的时候最常看的是 Advertisement 标签因为广播包里藏着设备的所有“自我介绍”。3.2 广播数据包到底怎么看广播包是 BLE 设备对外发声的唯一方式理解它的结构是调试的第一步。nRF Connect 的 Advertisement 标签会把广播包拆成多个 AD Structure每条结构包含三个字段Length、Type、Data。常见的 Type 有几种0x01 是 Flags标识设备是否支持 LE General Discoverable Mode0x09 是 Complete Local Name就是设备名0xFF 是 Manufacturer Specific Data厂商自定义数据。我自己的项目里经常用 0xFF 来放设备状态和自定义标识比如电量、工作模式、序列号后几位。这里有个实操技巧如果你发现手机搜不到设备先看广播包里有没有 Flags 字段。有些芯片默认不广播 Flags导致手机端认为设备不可发现。nRF52840 的 SDK 里广播初始化时如果没设置 Flags需要手动加上。这个坑我踩过一次排查了半天以为是射频问题结果就是少了一个字节。3.3 连接后的 GATT 操作要点点设备条目右侧的 Connect 按钮手机就会发起连接。连接成功后GATT 标签会列出设备所有的服务。每个服务下面有特征值每个特征值有属性Read、Write、Notify、Indicate。读操作很简单点特征值右边的下载图标就能读当前值。写操作分两种Write 和 Write Without Response。前者需要对方回复确认后者不回复速度快但不可靠。我在调试时一般先用 Write 确认功能正常再切到 Write Without Response 测吞吐。Notify 是最常用的功能点特征值右边的三个点选 Enable Notifications设备就会主动推送数据。nRF Connect 会把每次推送的值和时间戳都记录下来方便你分析数据变化规律。我调试传感器数据上报的时候就是靠这个功能确认采样率和数据格式对不对。注意安卓端 nRF Connect 在连接多个设备时如果其中一个设备断开其他设备的连接可能会受影响。这是安卓蓝牙协议栈的限制不是 App 的问题。调试多连接场景时建议用多部手机分别连不同设备。3.4 桌面端 Programmer 烧录全流程桌面端 nRF Connect for Desktop 的安装稍微复杂一点。先去 Nordic 官网下载安装器安装完成后打开会看到一个应用列表。第一次使用需要先安装 Programmer 应用点 Install 等它下载完就行。安装完成后把 nRF52840 DK 用 USB 线连到电脑。Programmer 打开后左上角会自动识别到设备显示为“nRF52840 DK”或者类似的名称。如果没识别到检查两个地方一是 USB 线是不是数据线有些线只能充电二是 DK 板上的电源开关有没有拨到正确位置。识别到设备后点 Add file 加载 HEX 文件。如果你用的是 Nordic SDK 编译出来的固件通常会有多个 HEXSoftDevice 的、Application 的、Bootloader 的。Programmer 支持一次加载多个文件它会自动按地址排序。加载完成后点 Erase Write等进度条走完就烧录成功了。这里有个细节值得说Erase Write 会先全片擦除再写入所以烧录时间比单纯 Write 要长但能避免旧固件残留导致的问题。如果你只是改了一小段代码想快速验证可以用 Write 模式只写变化的区域。但量产或者换协议栈版本时一定要用 Erase Write。3.5 命令行烧录nrfjprog 的实用参数图形界面虽然方便但有些场景必须用命令行。比如你要在脚本里自动烧录或者需要烧录到多块板子nrfjprog 就是唯一选择。最基本的烧录命令是nrfjprog --program firmware.hex --chiperase --reset--chiperase对应图形界面的 Erase Write--reset表示烧录完自动复位运行。如果你有多个 HEX 文件可以多次--programnrfjprog 会按顺序写入。查看已连接的调试器nrfjprog --ids这个命令会列出所有连接的 J-Link 序列号。多板子同时烧录时用--snr参数指定序列号就能精确控制烧哪块。擦除整片 Flashnrfjprog --eraseall这个命令在换协议栈或者固件跑飞了起不来的时候特别有用。我有一次烧了一个错误的 SoftDevice 版本设备完全没反应就是用 eraseall 清干净后重新烧才恢复的。4. 实操过程与核心环节实现4.1 从零搭建一个可调试的 BLE 工程假设你刚拿到 nRF52840 DK想跑一个最简单的 BLE 广播工程。我的建议是从 Nordic SDK 里的ble_app_blinky例程开始这个例程包含了广播、连接、LED 控制和按键通知麻雀虽小五脏俱全。第一步是编译。如果你用 Keil打开ble_app_blinky的工程文件选择 nRF52840 DK 的 target直接 Build。编译完成后会在_build目录下生成 HEX 文件。如果你用 GCC 或者 IAR流程类似只是输出目录不同。第二步是烧录。打开 nRF Connect for Desktop 的 Programmer连上 DK 板加载编译出来的 HEX。注意这里要加载三个文件SoftDevice 的 HEX在 SDK 的components/softdevice/s140/hex目录下、Application 的 HEX、还有s140_nrf52_7.x.x_softdevice.hex对应的 bootloader如果需要 DFU 功能。如果只是调试加载 SoftDevice 和 Application 两个就够了。第三步是验证。烧录完成后DK 板上的 LED 应该开始闪烁说明程序跑起来了。打开手机 nRF Connect扫描周围设备应该能看到一个叫“Nordic_Blinky”的设备。点连接进去看 GATT 表应该有一个 LED 服务和一个按键服务。点 LED 特征值的写操作写入01DK 板上的 LED 应该亮起。这个过程看起来简单但每一步都有坑。比如编译时选错了 target烧录后设备没反应或者 SoftDevice 版本和 SDK 不匹配编译能过但运行会 HardFault。我建议第一次跑例程时严格按 SDK 文档的版本对应关系来不要混用不同版本的 SoftDevice 和 SDK。4.2 用手机端调试自定义服务跑通例程后下一步就是加自己的服务。假设你要加一个自定义的温度服务UUID 用 0x1234特征值用 0x5678属性是 Notify。在代码里你需要定义服务的 UUID、特征值的 UUID、以及特征值的元数据。Nordic SDK 里用ble_uuid_t和ble_gatts_char_md_t这些结构体来描述。添加完服务后重新编译烧录手机端 nRF Connect 连接后就能看到这个自定义服务。这里有个调试技巧如果手机端看不到你的自定义服务先检查 UUID 的字节序。BLE 的 UUID 是小端序但 Nordic SDK 里的BLE_UUID_128宏定义是按大端序写的实际存储时会自动转换。如果你手动填 UUID 数组很容易搞反。我一般用BLE_UUID_128宏来定义避免手动处理字节序。另一个常见问题是 Notify 不工作。检查三个地方一是特征值的 CCCDClient Characteristic Configuration Descriptor有没有使能手机端要手动点 Enable Notifications二是代码里有没有调用sd_ble_gatts_hvx发送通知三是连接句柄和特征值句柄有没有传对。这三个地方任何一个错了Notify 都不会有数据。4.3 广播数据自定义与验证广播数据是设备的“名片”自定义广播内容是很常见的需求。Nordic SDK 里通过ble_advdata_t结构体来配置广播内容可以设置设备名、服务 UUID、厂商自定义数据等。假设你要在广播里加入一个自定义的厂商数据格式是公司 ID2 字节 设备状态1 字节 电量1 字节。代码里需要构造一个ble_advdata_manuf_data_t结构体把数据填进去然后赋给ble_advdata_t的p_manuf_specific_data字段。烧录后手机端 nRF Connect 的 Advertisement 标签里应该能看到一条 Type 为 0xFF 的 AD StructureData 字段就是你填的四个字节。如果看不到检查广播数据总长度有没有超过 31 字节——这是 BLE 广播包的限制超了会被截断或者广播失败。提示nRF52840 支持扩展广播Extended Advertising可以突破 31 字节限制但需要手机端也支持蓝牙 5.0 的扩展广播功能。调试阶段建议先用传统广播确认数据格式正确后再考虑扩展广播。4.4 连接参数协商与实测连接参数直接影响功耗和响应速度是 BLE 开发里必须掌握的一环。连接参数包括三个核心值Connection Interval连接间隔、Slave Latency从机延迟、Supervision Timeout超时时间。Connection Interval 决定了手机和设备多久通信一次。间隔越小响应越快但功耗越高。Nordic SDK 里可以在广播时通过ble_gap_conn_params_t设置期望的连接参数手机端连接时会参考这个值但最终以手机端的决定为准。我实测下来安卓手机对连接参数的接受范围比较宽最小可以到 7.5ms最大到 4s。iOS 则比较严格最小 15ms而且对 Slave Latency 有限制。如果你的产品要同时支持安卓和 iOS建议把期望参数设成 iOS 能接受的范围避免 iOS 端连接后频繁断开。调试连接参数时nRF Connect 手机端有个很实用的功能连接后点右上角的菜单选“Connection Parameters”可以看到当前实际使用的参数值。如果发现手机端协商后的参数和你期望的差很多可以尝试在代码里调整ble_gap_conn_params_t的 min 和 max 值给手机端更大的选择空间。4.5 烧录失败的排查流程烧录失败是新手最常遇到的问题我整理了一个排查顺序基本能覆盖 90% 的情况。先看 Programmer 有没有识别到设备。如果没识别到检查 USB 线、电源开关、驱动。Windows 上 J-Link 驱动有时候会装失败去设备管理器看有没有黄色感叹号有的话重新装驱动。如果识别到了但烧录报错看错误信息。常见的有“Could not find the file”说明 HEX 文件路径不对或者文件损坏“Failed to write”可能是 Flash 被锁了需要先执行nrfjprog --recover解锁。--recover这个命令要特别说一下。nRF52840 有个 APPROTECT 保护机制如果启用了调试接口会被锁住无法烧录。--recover会擦除整片 Flash 并解除保护但也会把所有数据清掉。我有一次不小心在代码里启用了 APPROTECT结果板子完全连不上就是用--recover救回来的。还有一种情况是烧录成功但设备不运行。先确认 SoftDevice 和 Application 的地址有没有重叠。Nordic SDK 里SoftDevice 通常占用 0x00000000 到 0x00026000Application 从 0x00026000 开始。如果你编译时改了链接脚本把 Application 的起始地址设错了就会覆盖 SoftDevice 的区域导致设备起不来。5. 常见问题与排查技巧实录5.1 手机搜不到设备怎么办这是最高频的问题排查思路按优先级来。第一确认设备真的在广播。用另一部手机或者另一个调试 App 交叉验证。如果别的手机也搜不到问题在设备端如果别的手机能搜到问题在这部手机。第二检查广播包里有没有 Flags 字段。前面说过没有 Flags 手机端可能不显示。在 nRF Connect 的 Advertisement 标签里看如果没有 Type 0x01 的条目就在代码里加上。第三检查设备名有没有超过 31 字节。BLE 广播包总长度限制是 31 字节设备名太长会把其他数据挤掉甚至导致广播失败。建议设备名控制在 10 字节以内。第四检查手机蓝牙有没有开启“可被发现”模式。有些安卓手机在蓝牙设置里有个“允许其他设备检测到此手机”的开关虽然理论上不影响扫描但实测有些机型确实会干扰。5.2 连接后立刻断开是什么原因连接成功但马上断开通常有几个原因。一是连接参数不兼容。手机端协商的连接参数设备端不接受设备主动断开。解决办法是在代码里放宽ble_gap_conn_params_t的范围或者直接在断开回调里打印断开原因码。二是 GATT 表有问题。如果设备在连接后立即执行服务发现而你的 GATT 表里有重复的 UUID 或者句柄冲突服务发现会失败手机端可能主动断开。用 nRF Connect 连接后看 GATT 标签能不能正常列出服务如果列不出来或者报错就是 GATT 表的问题。三是内存不足。nRF52840 的 RAM 有限如果连接时分配的内存不够协议栈会拒绝连接。检查sdk_config.h里的NRF_SDH_BLE_GATT_MAX_MTU_SIZE和NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE有没有设得太小。5.3 Notify 数据收不到怎么排查Notify 不工作的排查我一般按这个顺序来。先确认 CCCD 有没有使能。手机端 nRF Connect 里点特征值右边的三个点看“Enable Notifications”是不是已经勾上。如果勾了还是没数据看设备端代码有没有调用sd_ble_gatts_hvx。然后确认发送的数据长度有没有超过 MTU。默认 MTU 是 23 字节实际可用的 Notify 数据是 20 字节。如果你发的数据超过 20 字节需要先协商更大的 MTU。nRF Connect 手机端支持 MTU 协商在连接设置里可以手动请求 MTU 大小。最后确认连接句柄和特征值句柄。sd_ble_gatts_hvx需要传入连接句柄和特征值句柄这两个值在连接回调和特征值添加回调里获取。如果传错了函数会返回错误码但很多人不检查返回值导致以为发送了实际没发出去。5.4 烧录后设备无反应的排查烧录成功但设备没反应先看电源指示灯。DK 板上有电源 LED如果这个灯不亮说明板子根本没通电检查 USB 线和电源开关。如果电源灯亮但程序不跑用调试器连上去看 PC 指针停在哪。Keil 里点 Debug 按钮看汇编窗口的 PC 位置。如果停在 HardFault_Handler说明程序跑飞了常见原因是访问了未初始化的指针或者数组越界。还有一种情况是 SoftDevice 版本不匹配。比如你编译时用的是 S140 7.0.1但烧录的是 S140 6.1.1协议栈 API 可能有变化导致初始化失败。解决办法是确保 SDK、SoftDevice、Application 三者版本对应。5.5 常见问题速查表问题现象可能原因排查方法解决办法手机搜不到设备广播未开启或 Flags 缺失用另一部手机交叉验证检查广播初始化代码添加 Flags连接后立刻断开连接参数不兼容查看断开原因码放宽连接参数范围Notify 无数据CCCD 未使能或 MTU 不足检查 CCCD 状态和 MTU 大小使能 CCCD协商更大 MTU烧录失败Flash 被锁或文件错误查看 Programmer 错误信息执行nrfjprog --recover烧录后无反应SoftDevice 版本不匹配检查 PC 指针位置确保三者版本对应设备名显示乱码编码格式错误查看广播包原始数据使用 UTF-8 编码6. 进阶技巧与个人经验分享6.1 用 RSSI 评估射频性能nRF Connect 手机端会实时显示每个设备的 RSSI 值这个值反映信号强度。调试射频性能时可以把设备放在固定距离看 RSSI 的波动范围。正常情况下1 米距离 RSSI 在 -40dBm 到 -60dBm 之间波动不超过 10dBm。如果波动很大可能是天线匹配有问题或者周围有干扰源。我自己的经验是nRF52840 DK 板载天线在空旷环境下10 米距离 RSSI 大约 -70dBm还能正常连接。如果加了外壳或者放在金属附近RSSI 会明显下降。做产品设计时天线周围要留足够的净空区远离电池和金属结构件。6.2 广播间隔与功耗的平衡广播间隔直接影响功耗。间隔越短设备被发现的越快但功耗越高。Nordic SDK 里默认的广播间隔是 100ms这个值在大多数场景下够用。如果你做的是 Beacon 类产品需要快速被发现可以缩短到 20ms如果是电池供电的传感器可以放宽到 500ms 甚至 1s。实测数据nRF52840 在 100ms 广播间隔下平均电流大约 50uA500ms 间隔下平均电流降到 20uA 左右。如果加上连接和 Notify功耗会更高。做功耗优化时优先调整广播间隔和连接间隔这两个参数的影响最大。6.3 用日志系统辅助调试Nordic SDK 支持多种日志输出方式最常用的是 UART 和 RTT。UART 需要外接串口模块RTT 则通过 J-Link 直接输出不需要额外硬件。我一般用 RTT因为不占用 UART 引脚而且速度比 UART 快。启用 RTT 日志的步骤在sdk_config.h里把NRF_LOG_BACKEND_RTT_ENABLED设为 1NRF_LOG_ENABLED设为 1。然后在代码里用NRF_LOG_INFO打印日志。烧录后打开 J-Link RTT Viewer就能看到日志输出。RTT 日志的好处是实时性强而且不影响蓝牙通信。我调试连接问题时会在连接回调、断开回调、Notify 发送回调里都加上日志这样手机端操作时电脑上能同步看到设备端的反应排查效率高很多。6.4 固件版本管理与回滚做产品开发时固件版本管理很重要。我习惯在代码里定义一个版本号宏编译时自动生成带版本号的 HEX 文件名。比如firmware_v1.2.3.hex这样烧录时不会搞混。回滚也很重要。如果新固件有问题需要快速回到旧版本。我的做法是保留每个版本的 HEX 文件并且记录每个版本对应的 SoftDevice 版本。回滚时先eraseall再按顺序烧录旧版本的 SoftDevice 和 Application。提示nRF52840 支持双 Bank DFU可以在不擦除旧固件的情况下升级新固件。如果升级失败设备会自动回滚到旧版本。这个功能在产品阶段很有用但开发阶段建议先关掉避免干扰调试。6.5 个人踩坑记录最后分享几个我实际踩过的坑希望能帮你省点时间。第一个坑是 APPROTECT。我在代码里启用了 APPROTECT 保护结果调试接口被锁J-Link 连不上。当时不知道--recover命令以为板子坏了差点重新买一块。后来查文档才知道nrfjprog --recover可以解锁但会清空所有数据。第二个坑是 SoftDevice 地址冲突。我改链接脚本时不小心把 Application 的起始地址设成了 0x00000000跟 SoftDevice 重叠。烧录后设备完全没反应用调试器看 PC 停在 0x00000000才意识到地址错了。第三个坑是广播数据超长。我在广播里塞了太多自定义数据总长度超过 31 字节结果手机端只能看到部分数据。后来把设备名缩短去掉不必要的服务 UUID才恢复正常。第四个坑是连接参数设得太激进。我把 Connection Interval 设成 7.5msSlave Latency 设成 0结果安卓手机连接后功耗飙升电池很快就没电了。后来改成 30ms 间隔Slave Latency 设成 4功耗降了一半多响应速度也够用。这套 nRF Connect 工具链用下来最大的感受是“顺手”。手机端调试不用反复插拔桌面端烧录一键完成中间省掉了很多传统开发流程里的繁琐步骤。如果你刚开始做 BLE 开发建议先把这套工具用熟后面再深入协议栈和射频细节会轻松很多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

使用 SDV-FailDriver-KMDF 示例驱动学习 Static Driver Verifier 静态验证:从缺陷注入到规则发现 2026/9/28 3:39:28

使用 SDV-FailDriver-KMDF 示例驱动学习 Static Driver Verifier 静态验证:从缺陷注入到规则发现

示例工程 【免费下载链接】Windows-driver-samples This repo contains driver samples prepared for use with Microsoft Visual Studio and the Windows Driver Kit (WDK). It contains both Universal Windows Driver and desktop-only driver samples. 项目地址&#xff1a…

阅读更多 →
学习通(慕课)自动刷课答题脚本 可接入api进行答题 2026/9/28 3:39:28

学习通(慕课)自动刷课答题脚本 可接入api进行答题

https://github.com/ArbStray/mooc-task-automation Windows 下的网课章节页辅助脚本,基于 Python Playwright。自动处理 video(视频)、reading(阅读)、exercise(练习)、empty(空白…

阅读更多 →
新手入门:怎么才服务器上做网站?避开高价坑的实操指南 2026/9/28 3:39:28

新手入门:怎么才服务器上做网站?避开高价坑的实操指南

新手入门:怎么才服务器上做网站?避开高价坑的实操指南 找建站公司怕被坑高价?这大概是每个新手入门时最真实的焦虑。你拿着几千块预算去询价,对方报个一两万,还说这是“基础版”,想加个后台管理又要加钱。这种信息差,正是很多不正规服务商的利润来源。…

阅读更多 →
pxpipe Reflow 图像渲染模式评估指南:L1 OCR 保真度、L2 会话回放与 Shipping Gate 判定体系 2026/9/28 3:39:28

pxpipe Reflow 图像渲染模式评估指南:L1 OCR 保真度、L2 会话回放与 Shipping Gate 判定体系

【免费下载链接】pxpipe cut Claude Code token usage by rendering text context as images 项目地址: https://gitcode.com/gh_mirrors/px/pxpipe 点击查看 免费下载 本指南以 pxpipe 仓库中 eval/results/summary.md(Reflow Eval 合并汇总报告&#…

阅读更多 →
C#物流信息管理系统源码+数据库:从跑通到二次开发全指南 2026/9/28 3:39:21

C#物流信息管理系统源码+数据库:从跑通到二次开发全指南

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

阅读更多 →
Telepresence gRPC 合约评审实战:proto 变更的 Wire 兼容性检查与双端同步验证 2026/9/28 3:39:21

Telepresence gRPC 合约评审实战:proto 变更的 Wire 兼容性检查与双端同步验证

云原生开发工具微服务网络 【免费下载链接】telepresence Local development against a remote Kubernetes or OpenShift cluster 项目地址: https://gitcode.com/gh_mirrors/te/telepresence 点击查看 免费下载 Telepresence 是一个面向远程 Kubernetes/OpenShift…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉