1. 项目缘起:当Qt遇上keySight 34401A万用表
最近手头有个活儿,需要从一台keySight 34401A数字万用表上,每秒读取一个电压值,然后把这些数据老老实实地存到电脑里。听起来是不是特简单?不就是串口读个数嘛!但说实话,刚开始那会儿,我对着这台“仪表贵族”和一堆RS-232线,还真有点无从下手。网上关于Qt串口操作的文章不少,但具体到34401A这个型号,把配置、连线、指令、数据解析和存储整个流程串起来讲明白的,不多。我折腾了好一阵,踩了几个坑,才把这条路跑通。所以我想,不如把我摸索的过程和最终的代码都整理出来,如果你也正好需要用它来搭建一个自动化的数据采集系统,比如实验室环境监测、生产线产品测试或者长时间的设备电压记录,那这篇内容应该能帮你省下不少时间。
keySight 34401A是一款非常经典、高精度的6位半数字万用表。它和电脑通信,主流有两种方式:一种是GPIB(也叫IEEE-488),另一种就是咱们今天要用的RS-232串口。GPIB速度更快,更适合组建复杂的自动测试系统,但它需要专门的GPIB接口卡。而RS-232就亲民多了,几乎任何电脑主板或通过一个简单的USB转串口线就能搞定,对于单台设备、速度要求不高的数据采集(比如我们这种每秒一次的),串口是性价比最高也最方便的选择。我们的目标就是用Qt写个窗口程序,点点按钮就能配置串口、实时显示万用表测得的电压值,并且自动把数据记录到文本文件里,形成一份完整的数据日志。
2. 战前准备:搞定万用表与硬件连接
在打开Qt Creator写代码之前,有两件更重要的事情需要先做对:正确配置万用表本身的通信参数,以及确保物理线路连接正确。这步要是错了,后面的代码写得再漂亮也是白搭。
2.1 万用表关键参数配置
给34401A通电开机,我们需要通过前面板的按键进入设置菜单,调整几个关键项。这个过程有点像设置一台老式手机,得有点耐心。
- 进入设置:按下
Shift键,然后按下面板上的<-(向左) 方向键,你会进入一个系统设置菜单。 - 设置接口与地址:使用方向键找到
IO或者INTERFACE相关选项。首先,我们需要设置 GPIB地址。即使我们只用RS-232,这个地址也需要设置成一个非“None”的值,比如31。更重要的是,将GPIB模式设置为 “Talk Only”。在这个模式下,万用表才会主动地、持续地向串口发送测量数据,这正是我们需要的“自动推送”模式。 - 选择接口类型:在
INTERFACE选项中,将其从默认的GPIB切换为 RS-232。 - 配置串口参数:进入
RS-232子菜单,进行详细设置。这里需要和稍后我们在Qt程序里的设置完全匹配:- 波特率 (Baud Rate):我选择了 9600。这是最常用、最稳定的速率,对于每秒一个数据绰绰有余。
- 数据位/停止位/校验位:我使用的配置是 8位数据位 (8 Data Bits),1位停止位 (1 Stop Bit),无校验 (No Parity)。这也是串口通信中最常见的配置。
- 设置编程语言:找到
LANGUAGE选项,将其设置为 SCPI。这是34401A通过串口通信时识别的指令语言标准。
配置完成后,一般按几次 Shift 键或者 Local 键退出菜单。这些设置会保存在万用表里,下次开机无需重复配置。如果你手头有官方的中文手册,对照着操作会更清晰。
2.2 硬件连线:RS-232线序的秘密
这是最容易出问题的一环。我一开始图省事,用了常见的“三线制”(只接RX、TX、GND),结果发现万用表毫无反应。后来查资料才知道,34401A的RS-232接口需要完整的握手信号支持。
你需要一根全引脚交叉连接的串口线(俗称“全反线”或“空调线”),或者一个支持完整信号转换的USB转RS-232适配器。关键线序是,电脑端(或USB转串口器)的9针D型口(DB9)要与万用表后部的9针接口实现如下连接:
| 电脑端 (DB9) | 信号定义 | 万用表端 (DB9) | 信号定义 |
|---|---|---|---|
| 针脚2 | RXD (接收数据) | 针脚3 | TXD (发送数据) |
| 针脚3 | TXD (发送数据) | 针脚2 | RXD (接收数据) |
| 针脚5 | GND (信号地) | 针脚5 | GND (信号地) |
| 针脚7 | RTS (请求发送) | 针脚8 | CTS (清除发送) |
| 针脚8 | CTS (清除发送) | 针脚7 | RTS (请求发送) |
简单来说,就是 2-3对调,5直连,7-8对调。其他针脚(1, 4, 6, 9)通常悬空即可。我最后是买了一根现成的9针全交叉串口线,配合一个品牌的USB转串口器,才终于让通信指示灯欢快地闪烁起来。<

1万+

被折叠的 条评论
为什么被折叠?



