仿真器虚拟串口连接指南:从驱动原理到调试输出一次理清

1. 这个连接问题,为什么值得单独拿出来说

先明确一点:所谓“连接仿真器虚拟串口”,简单说就是把调试器(仿真器)插到电脑后,系统里多出来的那个COM口真正用起来的过程。很多人第一次学嵌入式开发,买回一块开发板、一个调试器,辛辛苦苦把环境搭好了、固件也烧进去了,结果卡在“看不了调试输出”这一步——串口助手打开后一片空白,或者全是乱码,要么干脆设备管理器里压根找不到这个虚拟串口。折腾半天,其实根子就是个连接问题。

这个标题看着简单,背后牵扯的东西却不简单:USB转串口芯片的驱动原理、调试器板载虚拟串口的实现方式、波特率不一致导致的花式乱码、端口被其它程序抢占的微妙冲突、甚至USB供电不稳导致串口“间歇性消失”。把这些问题理顺了,你才算真正“连上了”这个串口,而不只是插了根线。

这篇文章适合谁?刚接触嵌入式开发、手里拿着ST-Link或者J-Link之类调试器、想通过虚拟串口查看设备日志的新手,也包括被操作系统、串口工具、驱动配置反复折磨过、想系统搞明白这套链路怎么回事的开发者。我尽量把原理、实操、踩坑一次讲透,篇幅会比较长,但保证每一段都是实际用得上的东西。先声明:文中提到的工具、芯片、调试器型号都是常见品类,不涉及任何具体商业推广,大家按自己手头的设备对号入座即可。

2. 拆开看:虚拟串口到底“虚拟”在哪

2.1 一条看似简单、实则“画蛇添足”的通路

从使用者的角度,“连接仿真器虚拟串口”就是插一根USB线、在电脑里看到一个COM口、然后打开终端就能收发数据。但这条通路的中间环节,比想象中要绕。

仿真器本体负责调试,比如烧录、断点、变量查看,这部分走的是调试协议。但很多仿真器会额外集成一个USB转串口功能,也就是把目标板的UART串口信号,通过仿真器上的转换芯片,变成USB信号送给电脑。对电脑来说,它不认识什么UART,只认识USB设备。于是驱动会把这个USB设备“伪装”成一个传统串口,也就是COM口。这个COM口没有对应的物理DB9接口,所以叫“虚拟串口”。

这里有个关键点:虚拟串口和真实串口在应用层完全一样,读写方式、API调用、波特率设置统统通用。但底层实现是USB模拟的,这就带来了一些额外的坑——比如驱动安装、枚举时机、USB挂起导致的掉线等。这些在真实串口里基本不存在。

2.2 常见的虚拟串口方案与芯片选型

要理解连接问题,先得知道你手里的仿真器用的是哪一颗转换芯片。不同的芯片对应不同的驱动策略,排查方向完全不一样。

常见的有这么几类:

芯片/方案典型特征驱动方式常见故障
FTDI系列(如FT232)驱动成熟,兼容性好官方驱动或系统自带盗版芯片被官方驱动屏蔽
Silicon Labs CP210x体积小,很多板载方案用官方驱动、系统更新可自动装旧驱动与新版系统不兼容
WCH CH340国产方案,成本低需手动安装驱动Win10/11不识别、驱动签名问题
ST-Link板载虚拟串口ST官方调试器自带随ST-Link驱动一起安装与调试功能驱动冲突
J-Link板载虚拟串口SEGGER方案随J-Link软件包安装端口号漂移、驱动版本不一致

我见过很多人卡在驱动上,第一反应是怀疑仿真器坏了。其实大概率是芯片厂商的驱动没有正确安装,或者系统自动更新的驱动和板载方案不匹配。举个例子:某开发板用的CH340方案,在Windows 10下插上后系统大概率能自动装驱动,但在某些精简版系统或老版本Windows 7下,就必须手动指定驱动路径,否则设备管理器里永远是个带感叹号的未知设备。

2.3 为什么虚拟串口的“卷”比别人多一步

连接仿真器虚拟串口,本质上就是在走一条“USB枚举 → 驱动匹配 → 串口抽象 → 应用层收发”的链路。任何一个环节出问题,表现都可能是“串口连不上”。这比用一根原生串口线直连电脑要复杂得多。

原生串口(如果电脑还有DB9接口的话)只需要电平匹配,开了终端就能收。虚拟串口则多出了驱动匹配这一步。更要命的是,仿真器往往同时具备调试和串口两个功能,也就是说一个USB设备下可能挂着两个甚至更多的接口(调试接口、虚拟串口、甚至大容量存储)。Windows对复合设备的处理、驱动的优先级、端口号的分配,都会影响最终你看到的是不是那个COM口。

理解了这套链路,再去看那些五花八门的“连接失败”,心里就有谱了——无非是链路中某一个环节断了而已。排查起来也能有的放矢,而不是瞎试。

3. 实操全流程:从插线到看见第一行日志

3.1 硬件连接与驱动确认

先说硬件。以最常见的ST-Link/V2或J-Link为例,仿真器一端接USB到电脑,另一端通过杜邦线或板载排针连接目标板。如果目标板是自带仿真器的开发板,比如很多板子上直接焊着ST-Link,那只需要一根USB线连电脑即可。这种情况下虚拟串口通常已经通过板载电路连接到了目标芯片的某个UART引脚,不需要额外接线。

但如果你用的是独立的仿真器,就得注意了:仿真器上的虚拟串口引脚(通常是TXD、RXD、GND)需要和目标板的UART交叉连接,也就是仿真器TXD接目标板RXD,仿真器RXD接目标板TXD,GND共地。很多人第一次连,搞成了同向连接——TXD接TXD,结果数据全“顶牛”了,自然是收不到任何东西。

接线完成后,把USB插上电脑。此时用肉眼确认一下:设备管理器里是否新增了端口(COM和LPT)或通用串行总线设备。这里有个非常实用的技巧,插拔前后分别截图对比设备管理器,新增的那个就是你的虚拟串口。分享一个我个人的习惯:把不用的USB设备先拔掉,只留仿真器,这样新增设备一目了然。

驱动方面,如果设备管理器里有黄色感叹号,或者显示“未知USB设备”,那就需要手动安装驱动了。

3.2 用几行命令验证串口本身是否健康

在打开任何串口助手之前,先做一个“裸检测”,确认这个COM口能不能被正常打开。这个习惯能帮你把问题迅速分层:是系统层面没识别,还是应用层面配置错了。

在Windows下,可以用PowerShell直接测试:

[System.IO.Ports.SerialPort]::GetPortNames()

如果输出为空,说明系统里一个可用串口都没有,那就别急着找终端工具的问题,先回头查驱动和枚举。如果有输出,比如COM3,那至少说明串口是登记在册的。

更进一步的快速验证是用模式命令检查串口参数,但mode命令在新系统里权限要求变高了,未必好用。所以我通常推荐直接用命令行终端测试发送。Linux/macOS 下更直观,直接看设备节点:

ls /dev/ttyUSB* /dev/ttyACM* /dev/cu.usb* 2>/dev/null

能看到类似/dev/ttyUSB0这样的节点,说明系统已经挂载了这个虚拟串口。此时可以用cat或echo做最原始的测试。比如目标板上电后如果有开机打印,直接:

cat /dev/ttyUSB0

波特率默认对不上也没关系,先确认有没有数据流在跑。如果cat之后屏幕上什么都没出现,也不要立刻断定是连接问题——先检查波特率,再检查接线,最后考虑目标板固件本身有没有输出。

3.3 串口助手的配置参数:一个都不能错

系统层面确认串口存在之后,才轮到串口助手登场。我见过不少人在这一步卡住:串口助手打开了,波特率设了115200,依然收不到东西。原因往往是忽略了其它几个参数。

串口通信的基本参数有五个,任何串口助手都绕不开:

  1. 端口号(COM口/TTY节点)
  2. 波特率
  3. 数据位(通常8)
  4. 停止位(通常1)
  5. 校验位(通常无)

它们之间的关系可以用一个类比来理解:串口通信就像两个人在打电话,波特率是语速,数据位是每句话的字数,停止位是句号,校验位是对暗号。双方必须“语速一致、句长相同、标点一样、暗号对得上”,才能顺畅交流。任何一个参数不匹配,对方说十句话你只能听懂两三句,而且剩下的全是乱码。

实际操作中,90%的嵌入式调试场景用的是8N1(8数据位、无校验、1停止位),波特率常见的有9600、57600、115200。如果你的目标板固件里写的是Serial.begin(9600),那串口助手就必须设9600,设成115200必然乱码。反过来也一样。

还有两个往往被忽略的细节。一是流控,有些串口工具默认开启了RTS/DTR流控,而你的虚拟串口链路根本不需要流控。如果目标板上有用这些引脚做其它功能的电路,可能会因为流控信号的变化导致异常复位或者数据异常。建议默认全部关掉。二是串口工具里的“接收换行”设置。如果你只发了数据没收数据,这一项无所谓;但如果你要发送指令给目标板,就必须确保发送内容带正确的换行符(\r\n还是\n),这取决于目标板固件怎么解析。

4. 高频问题与排查技巧实录

4.1 设备管理器里看不到虚拟串口

这是最让人抓狂的问题——插上去一点反应都没有。“看不到”又可以细分成好几种情况,每种情况原因完全不同。

先说第一种:插上去后连USB设备都没枚举出来。检查一下USB线。仿真器的USB线必须是数据线,不能是只充电的线。这根线看着跟充电线一模一样,但里面少了两根数据线,导致设备根本没有和电脑通信。随身多备几根线,插上无反应时优先换线,这能解决一半以上的“毫无反应”问题。

第二种:USB设备枚举出来了,设备管理器里能看到“USB输入设备”或“通用串行总线设备”,但没有出现COM口。这说明USB层面通了,但虚拟串口功能没有正常启用。常见原因是驱动没装好。右击该设备选择更新驱动,或者去芯片厂商官网下载对应驱动手动安装。还有一种情况:仿真器的这个USB口被同时用于调试和串口,需要安装特定版本的驱动包才能同时识别两个接口。比如某些ST-Link,如果只装了调试驱动,串口功能就出不来。

第三种:设备管理器里能看到带感叹号的设备。这种情况一般是驱动不匹配。右键查看属性里的设备状态,会看到错误代码。常见的错误代码28、10、43分别对应不同的驱动问题。代码28说明没有驱动,代码10说明设备无法启动,代码43是设备报告了问题。代码10和43经常出现在USB供电不足时。这时候换个U口试试,特别是台式机后面板直连主板的那种USB口,供电比前置HUB口稳定得多。

4.2 端口号能看见,但是串口打不开

设备管理器里有COM口,点开串口工具选择这个端口,却提示“打开失败”“被占用”或“拒绝访问”。这种情况常见于端口已经被其它程序占用。

很多后台工具会偷偷占用串口——某些调试软件、虚拟串口工具、甚至一些IDE的终端插件,启动时就去轮询所有COM口。解决办法很简单:拔掉仿真器USB线,重新插上。如果这样还提示占用,打开任务管理器,逐个关掉可疑的后台进程,特别是那些名字里带“serial”“com”的。

还有一种容易忽略的:NXP、ST等芯片的IDE插件、终端监控工具会持续占用串口,哪怕你没在用它。可以打开Windows的资源监视器,在“CPU”页面的关联句柄里搜索COM3,就能看到是哪个进程占用了它。

Linux下也有类似情况,打开设备时报Device or resource busy,通常是因为有别的进程已经打开了这个设备。排查方法更直接:

ls -l /dev/ttyUSB0 lsof /dev/ttyUSB0

能看到哪个进程持有这个文件描述符,kill掉或者关掉那个软件就行。

4.3 有数据、全是乱码:参数还是接线?

虚拟串口能打开、数据也在跑,但收进来的全是乱码,这种问题最玄学,也最能拉开新老手的差距。

乱码的根源只有两个:一是比特率不一致(术语上这两个词经常混用,其实就是波特率),二是信号接反。针对虚拟串口场景,还要多考虑一个因素:USB转串口芯片的时钟精度。老式芯片在921600等高波特率下可能有偏差,但115200及以下通常没问题。

先检查波特率。目标板固件源码里写的波特率是多少,串口助手就用多少。不要想当然,尤其是刚拿到别人的工程时,先去看代码里的初始化语句。有一个长期项目里养成的习惯:把板子上的程序打印一段printf("Hello")循环代码,然后开着串口助手一键扫描当前可用的波特率,逐个切换,看哪个能出正确字符。对于只有一两个固定波特率的调试场景,这个方法极高效。

判断接线反没反,有个金标准:如果TXD和RXD接反,那么要么完全没数据,要么收到的是一堆低电平错误位形成的乱码。这个时候可以把目标板的RXD和TXD对调一下。我记得第一次用独立ST-Link调试一块小系统板,怎么调都是乱码,后来发现是杜邦线颜色误导了我——红色线我习惯接电源,结果那次它是信号线。

还有一个很少被提及的坑:目标板如果同时插着仿真器的USB和另一个USB转串口模块,两块USB转串口芯片的GND在目标板上不是同一参考地,可能出现地环路,导致数据异常。简单处理:只保留一条USB连接,另一条断开GND。

4.4 我整理了这么一份速查表

现象排查顺序大概率原因
插上无任何反应换USB线、换USB口充电线无数据线、供电不足
设备管理器感叹号查看错误代码、装驱动驱动没装/版本不匹配
有COM口但打不开查占用进程、重启工具端口被抢占
有数据但乱码核对波特率/参数、交换TX/RX参数不一致、接线反
数据断断续续检查线材、换口、关流控线材干扰、流控误触发
只在拔插后才正常系统USB选择性挂起USB电源管理策略

最后一条单独说说。Windows默认开启了“USB选择性暂停”——电脑空闲时,系统认为USB设备“没在忙”,就把供电断掉了。对键盘鼠标这种低频设备没影响,但对一直在收数据的虚拟串口就是致命的:你会发现串口无故断开、数据停在某个字节再不动了。去控制面板 → 电源选项 → 更改计划设置 → 更改高级电源设置 → USB设置 → USB选择性暂停设置,把它禁用掉。嵌入式调试时建议保持关闭,这是个你平时想不起来、出问题时又极其难排查的隐藏杀手。

5. 进阶:让虚拟串口“连得稳、用得好”

5.1 虚拟串口的端口号漂移问题与固定方案

用仿真器虚拟串口久了,会遇到一个烦人的现象:今天插上显示COM3,明天插上变成COM5。端口号漂移本身不影响通信,但会影响自动化脚本、烧录工具的配置——每次都要手动改配置,烦不胜烦。

端口号漂移的根本原因是Windows按USB枚举顺序分配COM号,插拔、重启、换U口都会改变分配结果。解决办法是给这个设备固定一个COM号。操作路径:设备管理器 → 端口(COM和LPT) → 右键你的虚拟串口 → 属性 → 端口设置 → 高级 → COM端口号 → 选一个固定值。注意尽量选一个平常不用的端口号,比如COM8、COM9。为何避免COM10以上?老有些软件只适配到COM9,新版本虽然修复了,但嵌入式行业里老工具流传极广,兼容性保守一点没坏处。

这个方法对同型号的多个仿真器同样适用吗?不适用。如果手头有两个同型号仿真器,Windows会把它们识别成同一硬件,固定一个端口号可能导致两个设备抢同一个号。遇到这种情况,建议USB口分开使用,两个仿真器固定插同一对USB口,或者借助USB HUB的序列号特性来区分。批量调试点少的话,前者省时省力。

5.2 数据管理的实用套路

串口连上只是起点,怎么高效分析数据才是真正拉开效率的环节。平时我自己会配置一套“串口数据流水线”:裸串口通信 → 文本解析 → 可视化。但作为起步,先说两个不上复杂工具也能做的实用技巧。

一是给串口工具配置时间戳。不管是开源的串口调试助手还是商业终端,都会带“显示时间戳”的选项。开启后每条日志前会自动加上接收时刻。调试通信协议时,这个功能的价值是无价的——你能直接看出某条命令发出到收到响应用了多少毫秒,分布式联调时对不同设备间的时序问题尤其有用。

二是区分输出通道。现代很多仿真器虚拟串口只有一个,但目标MCU往往有多个UART外设。如果固件把调试信息和业务日志混在同一个串口输出,数据一多就很难看。常见的善后做法是:给日志打上模块前缀,比如[SYS]、[NET]、[APP],然后在串口助手里用颜色规则或者正则高亮,一眼定位问题模块。这样做的成本几乎为零,对后期排错的帮助却是巨大的。

5.3 虚拟串口之外:一些反直觉的注意点

有不少人以为,既然虚拟串口号和真实串口在应用层“一样用”,那么用常见的串口调试工具收发,效果就等同原生了。其实不完全对。USB虚拟串口毕竟走的是USB协议,存在延迟和缓冲机制,在某些要求低延迟的工业场景下,需要专门处理。

一个典型表现是:用串口工具发送大量数据时,目标板偶尔会出现“丢帧”或“粘包”。这不一定是目标板程序写得有问题,可能是虚拟串口的USB收包缓冲机制造成的。USB在数据传输时是分帧的,帧大小、传输间隔都会影响数据流模式。市面上的标准串口工具大都走系统串口API,对这类问题没有特殊处理。调试实时性要求高的场景时,换用支持高精度定时发送的专用串口调试工具,或者直接用脚本控制发送节奏,数据就稳定得多。

再说一个反直觉的坑:目标板的串口电平。有些目标板用的MCU是3.3V逻辑电平,但有些外设或者老式芯片是5V电平。3.3V的MCU接5V的串口信号,轻则数据错误,重则烧毁串口引脚。仿真器虚拟串口输出的电平通常和仿真器供电电压一致,多数是3.3V。如果目标板是5V系统,需要确认虚拟串口的TXD、RXD引脚电平是否兼容。解决办法是加电平转换模块,或者用板载了电平转换电路的仿真器。这个点领域外的人容易忽略,但在嵌入式这行算基本功了。

6. 最后的经验小结

这些经验是实操过程中一条一条攒出来的,挑几条最值得记住的收尾。

第一,虚拟串口连接问题八成在驱动或线材,两成在参数配置。排查顺序永远是:确认设备枚举正常 → 确认COM口存在 → 确认无占用 → 核对通信参数 → 检查接线。不要一上来就怀疑固件程序有问题。

第二,能打印就多打印。目标板固件里预留一个串口初始化后立即打印版本号或Boot信息的功能,这对排查“连接仿真器虚拟串口失败”极其有效——只要插上能看到打印,说明链路已经通了;看不到打印,再往下追。

第三,固定端口号、关闭USB电源管理、尽量避免多个工具同时占用串口。这三件事做完,你在虚拟串口上浪费的时间能少一半以上。

第四,在选仿真器时,虚拟串口方案的成熟度值得纳入考量。FTDI方案贵但省心,CH340方案便宜但在某些系统下需要折腾驱动。如果你是新手,建议优先选择驱动生态成熟的方案,少给自己埋雷。

最后分享一个我在现场调试时常用的习惯:随身带一个便携串口调试终端,确认好COM口号、波特率和接线顺序,然后写一个小脚本自动轮询打开端口并发送测试指令。这个习惯帮我迅速判断过无数次“是板子的问题还是连接的问题”。把这个思路用在你自己的项目里,虚拟串口终究会从一个麻烦,变成你最顺手的调试利器。

相关新闻

PostgreSQL在Windows安装与Navicat连接全攻略:从环境验证到高频报错排查

PostgreSQL在Windows安装与Navicat连接全攻略:从环境验证到高频报错排查

先说明一下我这篇要写什么。PostgreSQL 在 Windows 上的安装教程,网上随手一搜就是一堆,但大多数都写到“安装向导走完就算大功告成”。实际用起来根本不是这么回事:装完那一刻,psql 在命令行里敲密码能进,换到 Navica…

2026/10/20 5:44:15 阅读更多 →
2N数组中找重复N次:从哈希到O(1)的相邻比较法

2N数组中找重复N次:从哈希到O(1)的相邻比较法

这题我愿称之为“最容易被过度设计的简单题”。第一次在题库里翻到“在长度 2N 的数组中找出重复 N 次的元素”时,我脑子里冒出来的第一反应是:又要上哈希表数次数了。但等我耐着性子把题干里的三个条件逐条读完之后,才意识到这题考的根本不是…

2026/10/20 5:44:15 阅读更多 →
HTTP请求头伪造入门:从SWPUCTF新生赛题看Web安全

HTTP请求头伪造入门:从SWPUCTF新生赛题看Web安全

1. 题目初印象:从名字里能读出什么先说结论:这道[SWPUCTF 2021 新生赛]Do_you_know_http是一道典型的、面向新手的Web安全入门题,核心考察的是对HTTP协议基础知识的理解与抓包改包能力。它不会要求你掌握复杂的漏洞利用链,也不涉及…

2026/10/20 5:43:15 阅读更多 →

最新新闻

artcraft类创作工具技术架构与交互设计实战指南

artcraft类创作工具技术架构与交互设计实战指南

1. 从"artcraft"这个名字说起:一个被低估的创作工具定位问题第一次看到"artcraft"这个词,我脑子里蹦出来的第一反应是"艺术"加"手艺"的组合。这不是一个随便拼出来的名字,它暗示了一种很具体的产品气…

2026/10/20 6:27:33 阅读更多 →
从自由发挥到受控执行:大模型Skill机制实战

从自由发挥到受控执行:大模型Skill机制实战

1. 先弄明白:Skill到底解决的是什么问题1.1 大模型能力的边界在哪里如果你用过几款主流的大模型对话工具,就会发现一个奇怪的现象:让模型帮你"解释一段代码""写个正则表达式"很容易,但让它"按团队规范自…

2026/10/20 6:27:33 阅读更多 →
JavaFX+SSM架构实战:桌面客户端与数据服务端的高效整合

JavaFX+SSM架构实战:桌面客户端与数据服务端的高效整合

简介:这是一份融合 JavaFX 与 SSM 框架的 ERP 系统完整项目,面向需要将桌面 GUI 与企业级后端整合开发的 Java 学习者、毕业设计或项目实战人群,既能学习界面设计,也能掌握经典后端框架的落地方式。资源共包含 2 个文件&#xff1…

2026/10/20 6:27:33 阅读更多 →
Python与API文本分析实战:从文本清洗到工程化部署

Python与API文本分析实战:从文本清洗到工程化部署

AI应用的潜力,有一大半藏在文本里。文本分析这个方向,我自己前前后后折腾过不少方案,从早期的正则规则、词频统计,到开源模型微调,再到现在用 Python 接各类大模型 API 做文本分析,最大的感受是&#xff1a…

2026/10/20 6:27:33 阅读更多 →
IPv4报文头部详解:字段、分片与网络排查核心知识

IPv4报文头部详解:字段、分片与网络排查核心知识

做网络排查做得久了,你会发现一个特别有意思的现象:很多人能把TCP的三次握手、四次挥手讲得天花乱坠,可一旦你把抓包工具里的一帧数据展开,让他逐字节解释一下IPv4头部,他反而会卡壳。TCP、UDP这些传输层协议太出名&am…

2026/10/20 6:27:33 阅读更多 →
STM32 bxCAN实战:从物理层到过滤器配置与调试排障

STM32 bxCAN实战:从物理层到过滤器配置与调试排障

做嵌入式这几年,UART、I2C、SPI都是老朋友,但真正让我觉得“像个通信工程师”的,是开始啃STM32的CAN外设之后。原因很简单:在汽车、机器人和工业现场,CAN总线是默认的“老大哥”,而它在微控制器上的硬件实现…

2026/10/20 6:26:33 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →