简介:面向毫米波雷达调试与车载电子测试场景,这份压缩包整合了Hurys雷达调试软件及南京来可、创芯科技CAN分析仪的配套驱动,适合从事ADAS雷达参数配置、性能验证与故障排查的工程师使用。资源共19个文件,压缩包约5.6MB,以exe可执行程序、sys/inf/dll驱动组件和rar子包为主,另附pdf配置说明与pptx操作演示,兼顾软件安装、驱动部署与参数查阅。已有1720人学习下载。读者可借助调试软件完成工作频率、探测距离、角度分辨率与更新率等参数设置,并通过目标距离、速度、角度的可视化界面评估雷达状态;驱动部分覆盖设备识别、CAN总线仿真、数据捕获分析和波形显示,便于联调硬件与排查通信问题。整体目录将雷达软件与两类分析仪驱动分开归档,配合说明文档可较快搭建调试环境,适合需要理解毫米波雷达原理与CAN协议的中级技术人员查漏补缺。
1. 装 Hurys 雷达调试环境,先不要急着双击那个压缩包
毫米波雷达的调试环境,出问题的环节往往不在软件本身,而在它下面那层 CAN 链路。Hurys 雷达调试软件和 CAN 分析仪驱动被打在同一个压缩包里,很多人拿到手的第一反应是双击、下一步、完成,软件界面确实能打开,可目标列表一直是空的,波形区一条线都不动。这时候去翻软件设置,八成是白费功夫,问题出在系统根本没把 CAN 分析仪识别成可用设备。这套环境本身不复杂,但顺序错一步就会连锁失败:驱动没装对,端口就不出现;端口不出现,软件就打开不了通道;通道打不开,后面所有参数都是空谈。下面按我实际装过的一台车载感知工位的顺序,从压缩包解压一直写到能刷出目标点。
2. 环境清单与版本对齐:动手前先确认三件事
装雷达调试软件最容易犯的错,是把“软件装上了”当成“环境好了”。Hurys 这套工具的运行依赖分成三层:Windows 系统层要能跑得起 .NET 与 VC 运行库,驱动层要把 CAN 分析仪变成一个可寻址的设备,应用层才是调试软件本身。三层里任何一层缺件,表现出来的症状都是“软件能开但连不上”,新手很容易在这一步卡半天,反复重装软件却始终不碰驱动。
我的习惯是先把机器状态查一遍再动手,五分钟的事,能省掉后面一小时的返工。
2.1 系统与运行库的底线要求
调试主机我一般只用 64 位 Windows 10 或 11,版本号 1909 以上。不是挑剔,是这类工具的安装包大多是近几年打包的,32 位系统上即便勉强装进去,USB-CAN 驱动那段也经常只提供 x64 版本,装上就是个半残状态。另外别用那种被优化过、删了系统组件的精简版镜像,.NET 和 VC 运行库经常被动过手脚,装到一半报 0x80070005 之类的权限错误,排查起来比重新装系统还慢。
| 环境项 | 建议版本 | 不满足时的典型表现 |
|---|---|---|
| 操作系统 | Windows 10/11 64 位,1909 及以上 | 安装程序直接拒绝,或装完点图标无反应 |
| .NET Framework | 4.8 或 4.8.1 | 启动报“无法加载文件或程序集” |
| VC++ 运行库 | 2015-2022 x64(含 2010、2013 备用) | 打开即闪退,事件查看器里有 0xc000007b |
| USB 端口 | 主板后置 USB 2.0/3.0 直连 | 分析仪频繁掉线,设备管理器刷新后消失 |
| 权限 | 本地管理员 | 驱动装到一半被拦,配置文件写不进安装目录 |
先用两行 PowerShell 把系统底子摸清楚,比事后猜快得多:
# 系统版本与架构,确认是 64 位 Win10/11 Get-ComputerInfo | Select-Object OsName, OsVersion, OsArchitecture # .NET Framework 4.x 的 Release 值:528040 及以上为 4.8,533320 为 4.8.1 (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release # 列出已安装的 VC++ 运行库,看有没有 x64 版本 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall' | ForEach-Object { (Get-ItemProperty $_.PSPath).DisplayName } | Where-Object { $_ -like '*Visual C++*' } | Sort-Object -Unique第一行的Get-ComputerInfo只取三个字段,避免输出几百行系统信息。第二行读注册表的Release值,这是判断 .NET 4.x 具体小版本最可靠的办法,比在控制面板里看“已启用或关闭 Windows 功能”准。第三行同时扫 64 位和 32 位两个卸载键,因为 VC++ 运行库会分别注册,只扫一处经常会漏掉 x64 那半边,结果就是“明明装了还是闪退”。
2.2 CAN 分析仪的硬件形态决定装哪套驱动
同一个压缩包里往往塞了两套以上驱动,这不是打包的人偷懒,而是 CAN 分析仪本身有两种常见形态,驱动完全不同。
一种是专用 USB-CAN 分析仪,插上以后在设备管理器里表现为厂商自定义设备,通常挂在“通用串行总线设备”下面,配套的是厂商的驱动加一个 DLL,Hurys 软件通过这个 DLL 直接调用,不经过串口。另一种是 USB 转串口加 CAN 收发模块的组合,插上以后在“端口(COM 和 LPT)”里多出一个虚拟串口,软件是按串口方式打开再走协议封装的。
分辨方法很土但很有效:插上分析仪之前先截个图,插上之后再对比一次设备管理器,多出来的那一项在哪个分类下,就决定了你该装哪套。装错的典型症状是驱动装完了,设备管理器里干干净净,什么都没有新增,因为安装程序把文件释放到了别的目录,却没有匹配到你的硬件 ID。
提示:把分析仪插在机箱后置的 USB 口上,别用前面板延长线,也别经过 USB Hub。调试过程中分析仪掉线一次,整套参数就得重来,这种折腾完全没必要。
2.3 解压与目录规划:路径里的中文和空格是隐形雷
.rar格式用 Windows 自带的解压功能打不开,双击只会提示无法解压或者解出来一堆 0 字节文件。装个 7-Zip 是最省事的做法,命令行也能直接调,方便写进批处理里。
:: x 表示保留压缩包内的目录结构解压,-o 后面跟输出目录,-y 跳过覆盖确认 "C:\Program Files\7-Zip\7z.exe" x "D:\download\Hurys雷达调试软件和CAN分析仪驱动.rar" -o"D:\Radar\Hurys_pkg" -yx和e的区别值得记一下:x带路径解压,e会把所有文件摊平到同一层,驱动包里同名的 inf 一摊平就互相覆盖,装上去版本全是乱的。-y只是省掉交互,脚本里跑的时候不加会一直卡在等待输入。
解压完别急着装,先把目录规划好。我一般按下面这个结构铺,后面所有的配置、日志、备份都有固定位置,出问题的时候不用满硬盘找:
D:\Radar\ ├─ Hurys_pkg\ 解压出来的原始包,只读,装完就不再改动 ├─ Driver\ CAN 分析仪驱动,单独留一份,换机器直接拷 ├─ Config\ 雷达参数文件、协议文件、DBC ├─ Tools\ 7-Zip、串口助手、CAN 测试小工具 └─ Log\ 调试日志,按日期建子目录安装路径本身也讲究。绝对不要放在C:\Program Files下面,也不要带中文和空格。前者的坑在于 UAC 虚拟化:软件想往安装目录写配置,系统悄悄重定向到VirtualStore,你在界面上改了参数、点了保存,重启软件又变回默认值,查半天查不出原因。后者的坑更直接,某些老版本的通信库用 ANSI 路径拼接,遇到中文目录直接打开文件失败,报错还只给一个错误码。
3. 安装 CAN 分析仪驱动:先让设备管理器认到设备
驱动这一步是整个环境的地基。判断标准只有一个,不是安装程序有没有弹“安装成功”,而是设备管理器里那个设备有没有正常出现、有没有黄色感叹号、分到的端口号是多少。这三条都对了,才轮到装 Hurys 软件。
3.1 两条安装路线:安装包与手动指定 INF
压缩包里的驱动目录一般两种情况都有:一个Setup.exe,加一堆.inf.sys.cat。优先走安装包,它会把 DLL 一起注册到系统目录,Hurys 软件启动时才能找到。用管理员身份跑,别直接双击:
# -Verb RunAs 触发 UAC 提权,驱动段写入需要管理员权限 Start-Process -FilePath 'D:\Radar\Driver\CANDriver_Setup.exe' -Verb RunAsStart-Process的-Verb RunAs等价于右键“以管理员身份运行”,好处是可以在脚本里串起来。安装过程中如果弹出“Windows 无法验证此驱动程序软件的发布者”,选仍然安装——内网工具链的驱动大多没做商业签名,这是常态,不是中毒。
安装包跑完设备还是没反应,就走手动指定 INF 的路线。设备管理器里找到那个带感叹号的“未知设备”,右键更新驱动程序,浏览计算机,再点“从计算机上的可用驱动程序列表中选取”,最后“从磁盘安装”,指到解压目录里的 inf 文件。命令行等价做法是:
:: pnputil 把驱动加入驱动库并立即尝试匹配现有设备,/install 表示同时安装到匹配设备 pnputil /add-driver "D:\Radar\Driver\canusb.inf" /install :: 列出第三方驱动包,确认刚加的这条在列表里,oemXX.inf 是系统分配的编号 pnputil /enum-drivers/add-driver只入库,/install才会往当前已连接的设备上装,两个参数一起用最省事。/enum-drivers是排查利器:如果发现同一个硬件 ID 对应了三条oem*.inf,说明之前装过多个版本,互相在抢,得先pnputil /delete-driver oemXX.inf /uninstall清掉旧的再装。
3.2 认设备:端口号、VID/PID 与状态确认
驱动装完,用 PowerShell 查比在设备管理器里翻树快,而且能直接拿到硬件 ID。
# 只列端口类且状态正常的设备,插拔前后各跑一次,多出来的那条就是分析仪的虚拟串口 Get-PnpDevice -Class Ports -Status OK | Select-Object FriendlyName, InstanceId # 筛出所有非正常状态的设备,黄色感叹号会在这里露头 Get-PnpDevice | Where-Object { $_.Status -ne 'OK' } | Select-Object FriendlyName, Status, Problem # 拿某条设备的硬件 ID,用来跟 inf 里的 VID/PID 对照 Get-PnpDeviceProperty -InstanceId 'USB\VID_1A86&PID_5523\5&2B3C' -KeyName DEVPKEY_Device_HardwareIds-Class Ports限定只查串口类,输出干净。Status -ne 'OK'这一句覆盖了所有异常状态,包括驱动没装(Unknown)、被禁用(Error)、驱动加载失败(Degraded),比只看感叹号全面。第三条的InstanceId要换成你自己上一步查到的值,硬件 ID 里的VID是厂商号、PID是产品号,拿这两个去跟 inf 文件里[Manufacturer]段的定义比对,能立刻判断出你装的是不是对应型号的驱动——很多人装完不通信,就是因为包里有两套驱动,装反了。
3.3 固定 COM 号与两级波特率,别让端口漂移
虚拟串口有个很烦的特性:换个 USB 口,COM 号就变。软件配置里写死了 COM3,明天插到另一个口变成 COM7,又连不上。解决办法是在设备属性里把端口号手动钉死。
设备管理器 → 端口 → 右键属性 → 端口设置 → 高级 → COM 端口号,选一个两位数以上的号,比如 COM20,避开系统里已经被蓝牙、虚拟串口占掉的小号段。改完拔插一次验证号不变,再回去配软件。
这里有个概念必须分清,不然参数一定填错:
| 参数 | 常见取值 | 作用范围 | 填错的后果 |
|---|---|---|---|
| 串口波特率 | 115200 / 921600 | 上位机与 USB 转串口芯片之间 | 完全收不到数据,或全是乱码 |
| CAN 波特率 | 500 kbps / 250 kbps | CAN 总线上的所有节点 | 能打开设备但一帧都收不到 |
| 采样点 | 75% / 80% | CAN 位定时 | 短线束无所谓,长线束偶发错误帧 |
串口波特率是 USB 转串口芯片和电脑之间的速率,CAN 波特率是总线上雷达和分析仪之间的速率,两者完全独立。我曾经见过有人把 CAN 波特率填成 115200,然后怀疑雷达坏了,查了一下午。判断方法很简单:串口波特率填错,连“打开端口成功”的提示都不会有;CAN 波特率填错,端口能打开、发送也显示成功,但接收计数永远是 0。
4. 安装 Hurys 调试软件:依赖、路径与前三个参数
驱动通了,软件这一层反而简单,但有两个地方很容易被忽略:安装顺序和首次启动的通信参数。顺序错了要重装,参数错了要重配,都是能一次做对的事。
4.1 安装顺序与依赖补齐
正确的顺序是:装 CAN 驱动 → 重启 → 装 VC++ 运行库 → 装 Hurys 软件 → 再重启。中间那次重启不能省,USB 驱动的服务要重新加载,不重启的话软件启动时枚举设备列表是空的。
安装包如果是 NSIS 打包的(这类国产工具十有八九是),命令行参数一般是/S静默加/D=指定目录,注意/D=必须放最后且路径不加引号:
:: 静默安装到非系统盘,规避 Program Files 的配置虚拟化重定向 HurysSetup.exe /S /D=D:\Radar\Hurys :: 装完检查目录结构和主程序是否到位 dir /b "D:\Radar\Hurys\*.exe" dir /b "D:\Radar\Hurys\*.dll" | findstr /i "can usb"第二行dir /b只输出文件名,干净。第三行用findstr过滤出跟 CAN、USB 相关的 DLL,这是判断软件走的是厂商 DLL 调用还是串口封装的关键:如果目录里有个跟驱动同名的 DLL,说明它直接调驱动接口,那这个 DLL 的位数必须和软件一致,32 位 DLL 配 64 位主程序是绝对跑不起来的。
装完第一次启动,右键“以管理员身份运行”。不是多此一举,软件要往安装目录写配置、往日志目录写文件,普通权限下某些目录写入会被 UAC 拦掉,表现就是“改了参数保存不了”。
4.2 首次启动要填的通信参数
软件打开后第一件事不是点连接,是把通信配置填对。四个参数决定能不能通:
| 参数 | 典型值 | 怎么确定 |
|---|---|---|
| 设备类型 | USBCAN / Serial | 按 2.2 节判断的硬件形态选 |
| 通道号 | 0 或 1 | 双通道分析仪接哪个口填哪个,单通道只填 0 |
| CAN 波特率 | 500000 | 查雷达规格书,车载雷达绝大多数是 500k |
| 收发报文 ID | 0x1A0 / 0x1A1 | 查协议文档,注意区分标准帧和扩展帧 |
报文 ID 这块最容易出错。协议文档里写的0x1A0如果是标准帧,软件里必须选“标准帧”,选成扩展帧发出去的是 29 位 ID,雷达根本不会应答,而且不会有任何报错提示——发送计数在涨,接收计数是 0,看着像雷达没上电。
配置文件一般落在安装目录的config或ini子目录下,格式大体是这样:
[Device] Type=USBCAN ; 必须与设备管理器里认到的驱动分支一致 Channel=0 ; 双通道分析仪接在 CH0 就填 0 Baudrate=500000 ; 这是 CAN 总线波特率,不是串口波特率 SamplePoint=0.8 ; 采样点,线束超过 2 米时从 0.75 调到 0.8 [Radar] Protocol=Hurys_V2 ; 必须与雷达固件里的协议版本对齐 TxId=0x1A0 ; 上位机下发帧,标准帧 RxId=0x1A1 ; 雷达上报帧,标准帧 FramePeriodMs=50 ; 帧周期,改小会线性拉高总线负载 [Log] Dir=D:\Radar\Log Level=INFO逐段说一下。SamplePoint是采样点,短线束上用默认值就行,线束拉长或者挂了多个节点之后,信号边沿变缓,采样点后移到 0.8 能明显减少错误帧。Protocol这一项跟固件版本强绑定,雷达那边升级过固件而软件这边没同步协议文件,现象是能收到帧但解析出来的距离、速度全是乱值。FramePeriodMs设成 50,意味着一帧大约 110 到 130 个位时间,占用带宽约 2.5 kbps,相对 500 kbps 的总线几乎可以忽略;但如果有人为了“看得更实时”改成 5ms,负载直接翻十倍,再加上雷达自己的上报帧,总线负载很容易冲到 30% 以上,那时候丢帧就是必然的。
4.3 参数文件与日志目录的归置
调试过程中会不断试参数,每试一组就改一次主配置,改坏了很难回退。我的做法是把Config目录单独拎出来,按“车型-雷达型号-日期”建子目录,每次调参前把当前 ini 复制一份进去。软件加载配置时手动指过去,不覆盖默认那份。这样折腾十几次以后,想回到某一个能跑通的状态,直接指回去就行,比记“我上次改的是哪个值”可靠得多。
日志目录同理,Level=INFO日常够用,抓通信异常时临时改成DEBUG,跑完立刻改回来。DEBUG 级别的日志在 500k 波特率、50ms 帧周期下增长很快,一晚上能写出几个 G,把系统盘塞满之后软件会莫名其妙崩溃,这个坑我踩过一次。
5. 避坑与排查:五条连不上雷达的记录
下面这五条都是装完之后真实卡住过的地方,按“现象 → 原因 → 解决”记,遇到同类问题可以直接对号。
5.1 设备管理器里是黄色感叹号,代码 52 或 10
现象:插上分析仪,设备管理器出现未知设备,属性里显示“代码 52:Windows 无法验证此设备所需的驱动程序的数字签名”,或者代码 10 设备无法启动。安装程序明明提示成功了。
原因:驱动包没做商业签名,或者签名证书过期。Win10 1607 以后对内核模式驱动的签名校验收紧,老驱动直接被拦。代码 10 则是驱动加载失败,多半是位数不匹配,装了个 32 位的 inf 到 64 位系统上。
解决:先确认位数,pnputil /enum-drivers看已入库的驱动,把重复的清掉再装 x64 版本。签名问题走高级启动临时禁用驱动签名强制,装完驱动再正常重启。这一步做完还是不行,说明包里的驱动跟硬件 ID 对不上,回 3.2 节用硬件 ID 比对 inf,别在原地反复重装。
5.2 端口能打开,接收计数永远是 0
现象:Hurys 软件点“打开设备”提示成功,发送计数在涨,接收计数一直是 0,目标列表空白。
原因:三种可能,按概率排是 CAN 波特率不匹配、CANH/CANL 接反、总线上没有终端电阻。波特率错了双方位定时对不上,帧同步失败,一个有效帧都收不到;接反了电平极性反了,同样收不到;没有 120 欧终端电阻,反射严重,短线上可能勉强能通,稍长一点就全是错误帧。
解决:先用万用表断电测 CANH 与 CANL 之间电阻,两个 120 欧并联应该是 60 欧左右,测得 120 欧说明只有一端有电阻,测得开路说明一个都没有。电阻正常再核对波特率,把软件和雷达都设成 500k 试一次,还不行就换成 250k 再试。最后查线序,CANH 对 CANH、CANL 对 CANL,很多端子壳上的丝印和实际针脚是反的。
5.3 软件一打开就闪退,事件查看器里是 0xc000007b
现象:双击图标,闪一下没了,任务管理器里进程出现又消失。Windows 事件查看器里记录错误模块,异常代码 0xc000007b。
原因:0xc000007b 是典型的位数混用,64 位主程序加载了 32 位 DLL,或者反过来。压缩包里同时给了 x86 和 x64 两套 DLL,安装时没区分,全拷进了同一个目录,加载顺序不确定,撞上哪个算哪个。
解决:看安装目录里 DLL 的分布,把不匹配的那套移走,只留与主程序位数一致的。用 PowerShell 批量看位数:读 PE 头里的 Machine 字段,0x8664 是 64 位,0x014c 是 32 位。同时补装 VC++ 2015-2022 的 x64 版本,很多 0xc000007b 其实是运行库缺失被误报成位数问题。
5.4 改了参数保存不了,重启软件又变回默认
现象:界面上把 CAN 波特率从 250k 改成 500k,点保存没报错,关掉重开又是 250k。
原因:软件装在C:\Program Files下,往安装目录写 ini 时被 UAC 虚拟化重定向到了%LOCALAPPDATA%\VirtualStore\Program Files\...。软件读的是原始路径,写的是虚拟路径,两边不是同一个文件。
解决:卸载重装到非系统盘,比如D:\Radar\Hurys,一劳永逸。实在不能重装,就去 VirtualStore 目录里把那份 ini 找出来,手动合并回安装目录,然后给安装目录加上当前用户的写权限。这个坑的隐蔽之处在于“保存成功”的提示是真的,文件也确实写了,只是写到了别处。
5.5 能收到帧,但目标列表的数值明显不合理
现象:接收计数正常增长,目标列表里也有条目,但距离、速度的数值跟实际场景完全对不上,或者一直是固定值不变。
原因:协议版本不匹配,或者字节序解析错了。雷达固件升级过,报文里的字段顺序、缩放系数变了,软件还用旧协议文件解析,读出来的就是乱的。另一种是大小端问题,雷达按小端发,软件按大端拼。
解决:先确认雷达固件版本,找对应版本的协议文件替换Config目录下的那份,重启软件。判断字节序有个笨办法:找协议里一个已知范围明确的字段,比如目标距离,实际场景里应该在 5 到 50 米之间,按小端和大端各解析一次,哪个落在合理区间就是哪个。这一步别靠猜,拿协议文档逐字段对一遍,比反复试快。
6. 装完怎么验证:三层自检,从自发自收到目标刷新
装完不等于通了。我习惯分三层验证,每一层都有明确的判定标准,哪一层断了就往哪一层查,不走回头路。
| 验证层 | 操作 | 期望结果 |
|---|---|---|
| 驱动层 | 拔插分析仪,看设备管理器端口列表 | 端口出现、无感叹号、COM 号与配置一致 |
| 链路层 | 分析仪设自发自收,发一帧 0x1A0 | 收端回读到同一帧,错误帧计数为 0 |
| 应用层 | Hurys 打开通道,看目标列表与帧计数 | 帧计数持续增长,目标数与实际场景一致 |
链路层这一步最值得花时间。把分析仪设成自发自收模式(有的工具叫“自测”或“回环”),不接雷达,自己发一帧自己收。能收到,说明驱动、端口、波特率、软件配置这一整条链是通的,剩下的问题一定在雷达侧或者线束上。收不到,就别去动雷达,老老实实回第 3 章查驱动。
自发自收通过之后接上雷达,先看帧计数,不看目标列表。帧计数在涨说明物理层和链路层都通了,这时候目标列表还是空的,问题就在协议解析,去查 5.5 那一条。帧计数不涨,问题在线束或者雷达供电,跟软件一点关系没有。
还有一个细节:接上雷达后盯一下错误帧计数。这个数字在总线负载低的时候应该长期为 0,偶尔跳一两个可以接受,持续增长就说明终端电阻或者线束长度有问题,早点处理,别等到现场演示的时候突然丢帧。
从那以后我每次装这套环境,都会先跑一遍自发自收再插雷达,宁可多花十分钟,也不在“软件能打开但没数据”这种模糊状态里耗一下午。希望帮到你。
本文还有配套的精品资源,点击获取