编程泰克 TDS 340 100MHz 数字存储示波器





5.00/5 (2投票s)
在上一篇文章中,我提供了一些关于泰克 TDS 340 100 MHz 数字存储示波器的信息和说明
在我之前的文章中,我提供了一些关于 Tektronix TDS 340 100 MHz 数字存储示波器的信息,以及如何安装 Option 14 卡以获得 VGA 输出和硬拷贝支持的说明。本文将提供更多关于使用 RS-232 端口将示波器与计算机连接以检索原始信号数据的信息,并分享我的一些有趣发现。
使用串行接口
首先必须在 Utility>System I/O 菜单中配置示波器串行端口,并需要使用交叉串行线将示波器连接到 PC。最好关闭硬件和软件握手,因为它们帮助不大,只会引起问题。建议的串行设置为 19200bps、8 数据位、无奇偶校验、1 停止位以及回车符 (CR) 行结束符。
要检查连接是否正常工作,请使用 Tera Term Web 3.1 等终端软件,将其配置为本地回显字符并使用 CR 行结束符,然后输入 ID? 再按 ENTER 键,让示波器返回其标识符字符串,它应该看起来像
TEK/TDS340,CF:91.1CT,FV:v1.00
命令不区分大小写,多个命令或响应由行结束符(CR、LF 或 CR/LF,根据配置)分隔。以问号 (?) 结尾的命令是查询命令,预期会收到示波器的响应。不以问号结尾的命令将仅由示波器执行,不返回任何值。要检查命令执行过程中是否有任何错误,请使用以下命令
*ESR? // 显示事件状态寄存器的值
ALLE? // 返回错误日志,其中将显示先前发送命令的任何错误
以下命令集摘自程序员手册,用于测量通道 1 输入信号的频率
MEASU:IMM:SOURCE CH1 // 将测量源设置为通道 1
MEASU:IMM:TYPE FREQ // 测量信号频率
MEASU:IMM:VAL? // 获取测量值
如果通道 1 的探头连接到示波器前部的 1kHz 校准点,则上述命令集将返回大约 1.0000E3 的值,表示频率为 1000Hz。
检索原始波形数据
命令 CURV? 用于向示波器请求正在显示的波形的原始测量数据。以下代码将返回示波器数据采集内存中的所有 1000 个数据点
DAT:SOU CH1 // 测量源设置为通道 1
DAT:ENC ASCI // ASCII 格式
DAT:WID 2 // 2 字节数据宽度
DAT:STAR 1 // 第一个数据点
DAT:STOP 1000 // 最后一个数据点 (第 1000 个)
CURV? // 获取波形数据
响应将是一组逗号分隔的整数
22784,23040,-6656,[…..],-6656,23040
当 DAT:WID 为 1 时,每个返回的整数值的范围是 -128 到 127。零是屏幕中心。当 DAT:WID 为 2 时,范围是 -32768 到 32767。上限是屏幕顶部上方的一个格,下限是屏幕底部下方的一个格。
为了正确解释数据,了解通过 WFMPR? 命令获得的示波器设置将很有用,该命令将返回以下信息
2;16;ASC;RP;MSB;“Ch1, DC 耦合, 2.0E0 V/div, 5.0E-4 s/div, 1000 点, 采样模式”;1000;Y;“s”;1.0E-5;500;“Volts”;3.125E-4;1.28E4;0.0E0
在返回的值中,每格电压、每格时间和采样率参数(突出显示)对于准确分析返回数据至关重要。
截取示波器屏幕截图
可以使用以下命令以编程方式捕获示波器显示屏的屏幕截图
HARDC ABO // 中止任何现有的硬拷贝
HARDC:FORM BMP // 将硬拷贝格式设置为位图
HARDC:PORT RS232 // 硬拷贝端口设置为 RS232
HARDC STAR // 开始硬拷贝
图像数据将通过串行链路发送。与其他命令不同,HARDC STAR 命令没有文件结束标记。为了在编程时确定何时停止接收数据,一种方法是计算接收到的字节数并与预期值进行比较。由于文件大小可能因硬拷贝输出设置而异,因此更简单的方法是假设如果一定时间内(例如 2 秒)未收到数据,则硬拷贝操作已结束。
自定义 PC 接口软件
利用空闲时间,我开发了一个 .NET 应用程序,允许用户检索频率测量、波形数据以及截取示波器的屏幕截图
要使用该应用程序,请先配置串行端口设置(端口号、波特率),然后单击 Open Port 初始化串行接口。Activity Log 文本框显示发送的命令和接收到的响应。Screenshot 按钮将从示波器请求屏幕截图并在应用程序中显示。如果选中 Show original color 选项,应用程序会将 TDS340 返回的黑底白字图像转换为绿底黑字,使其看起来更像真实的屏幕截图。Event Log 按钮将显示示波器事件日志中当前的所有错误消息。
该应用程序使用 .NET 框架的 SerialPort 组件。它假定示波器串行设置中已禁用硬件和软件握手。有趣的是,即使禁用了握手,DTR (Data Terminal Ready) 和 RTS (Ready To Send) 线也必须打开,否则示波器将不会响应发送的数据。这通过以下 C# 代码完成
SerialPort1.Handshake = false;
SerialPort1.DtrEnable = true;
SerialPort1.RtsEnable = true;
由于 .NET SerialPort 组件的 DataReceived 事件的异步性质以及我有限的时间,我没有尝试在启用操作按钮之前让应用程序等待所有数据接收完毕。因此,您需要等待片刻,在按任何按钮后检查活动日志,以确保命令已完成执行,然后再执行下一个操作,否则应用程序的行为可能会出乎意料。
Visual Studio 2012 源代码包含在下载包中。需要 Microsoft .NET Framework 2.0(Windows 7 或更高版本默认安装)。可执行文件位于 bin 文件夹中。您还可以在 GitHub 上找到应用程序的源代码和可执行文件。GitHub 存储库还包含 joesphan 所做的一些小的用户界面改进,这些改进在原始源代码中不可用。
TDS 340A、TDS 360 & TDS 380 示波器的下载
另请参阅
探索 Tektronix TDS 340 100MHz 数字存储示波器
Tektronix TDS 340 示波器的校准和采集问题