如何使用Kotlin从XE系列示波器中检索数据?
SDS系列示波器均具有远程编程和数据采集功能。 它们可以轻松集成到许多自动测试环境中,以简化测试期间的设置和数据采集。
我们的一位有用的客户开发了一个很好的编程示例,旨在使用Kotlin设置和检索来自SIGLENT SDS1202X-E示波器的数据,Kotlin是一个免费的开源编码环境(此处更多关于Kotlin)。
该代码使用LAN连接和打开的套接字。
感谢Chris Welty的代码!
代码如下:
**
* License: 3-Clause BSD
*
* Copyright 2018 Chris Welty
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package scope
import java.io.BufferedWriter
import java.io.OutputStreamWriter
import java.io.Serializable
import java.net.Socket
/**
* 创建一个从Siglent 1202X-E下载的波形
*/
class Waveform(val vDiv: Double, val vOffset: Double, val tDiv: Double, val tOffset: Double, val data: ByteArray) : Serializable {
val xs: DoubleArray
get() = DoubleArray(data.size, { i -> i * tDiv * 14 / data.size + tOffset – tDiv * 7 })
val ys: DoubleArray
get() = DoubleArray(data.size, { i -> data[i] * vDiv / 25 – vOffset })
companion object {
/**
* 下载在示波器屏幕上显示的波形
*/
fun download(): Waveform {
Socket(“192.168.1.222”, 5025).use { socket ->
println(“connected to ” + socket.inetAddress)
val output = BufferedWriter(OutputStreamWriter(socket.getOutputStream(), Charsets.US_ASCII))
//由于套接字可以返回二进制数据,我们不能使用InputStreamReader
//将字节翻译成字符。SCPI通常使用US ASCII。
val input = socket.getInputStream()
/**
*开始读取,直到遇到\ n。
*字节数字转换为数字(ASCII)。
*/
fun readLine(): String {
val sb = StringBuilder()
while (true) {
val c = input.read()
when (c) {
-1, ‘\n’.toInt() -> return sb.toString()
else -> sb.append(c.toChar())
}
}
}
/**
* 读取字节
* 字节不会转换为字符
*/
fun readBytes(n: Int): ByteArray {
val result = ByteArray(n)
var i = 0
while (i < n) {
i += input.read(result, i, n – i)
}
return result
}
fun writeLine(string: String) {
output.write(string)
output.write(“\n”)
output.flush()
}
/**
* 读取数据响应
* 比如 “C1:VDIV 1.00E+00V”.
* 此函数提取“1.00E + 00”,将其转换为double类型,然后返回。
*/
fun readNumber() = readLine().split(” “)[1].dropLast(1).toDouble()
writeLine(“*IDN?”)
println(readLine())
//将响应格式重置为默认值,以便readNumber()运行
writeLine(“CHDR SHORT”)
writeLine(“C1:VDIV?”)
val vDiv = readNumber()
writeLine(“C1:OFST?”)
val vOffset = readNumber()
writeLine(“TDIV?”)
val tDiv = readNumber()
writeLine(“TRDL?”)
val tOffset = readNumber()
// 请求所有的波形点
writeLine(“WFSU SP,0,NP,0,F,0”)
writeLine(“C1:WF? DAT2”)
// 解析波形响应
val header = String(readBytes(21))
println(“header is $header”)
val length = header.substring(13, 21).toInt()
println(“length is $length”)
val data = readBytes(length)
readBytes(2)
//最后两个无效字节
println(“V/div = $vDiv; offset = $vOffset; t/div = $tDiv; tOffset = $tOffset”)
return Waveform(vDiv, vOffset, tDiv, tOffset, data)
}
}
}
}
- |
- +1 赞 0
- 收藏
- 评论 0
本文由中国颜值的半壁江山转载自鼎阳科技官网,原文标题为:编程示例使用Kotlin从XE系列示波器中检索数据,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
如何用示波器测试CAN信号?
由于CAN信号是差分信号,在测试过程中一般需要使用差分探头来进行测试,但在研发阶段的板级测试中,确认安全的前提下可以使用普通低压无源探头进行测试。今天给大家介绍鼎阳科技SDS5000X标配的CAN总线触发与解码,了解示波器是如何测试CAN信号。本文将以SDS5054X+STB3演示板+普通无源探头展示CAN的测试,供大家参考。
设计经验 发布时间 : 2024-02-02
如何使用示波器FFT功能测量调幅信号的调制深度?
在幅度调制中,调制深度是指调制信号和载波信号的振幅比。借助快速傅里叶变化,调制深度可以通过测量边带幅度和载波幅度来得到。在这篇应用文档中,我们将要展示一种使用新峰值/标记功能(在鼎阳X-E系列数字示波器的6.1.31版本上可以看到)的便捷方式来测量调制深度。
设计经验 发布时间 : 2024-07-09
示波器如何测量直流电压?
不同型号的示波器在操作上可能会有细微差别,但基本原理与步骤相似,本文鼎阳科技介绍了使用示波器测量直流电压时一般遵循的步骤:连接探头、选择适当的量程、直流耦合、调整垂直设置、调整时间基准、观察波形、测量电压值。
设计经验 发布时间 : 2024-08-24
示波器触发原理及应用介绍
本文使用SDS1204X-E示波器、SDG2122X信号源来模拟不同情况下几种常用的触发模式和触发方式的应用。触发(实际就是隔离出感兴趣的信号)是使用示波器过程中出现频率最高的几个词之一,但对于一部分不是经常使用示波器的工程师来说,他们对触发还没有深刻的了解。
技术探讨 发布时间 : 2023-10-13
解析为什么示波器不能直接测市电220V而要接个隔离变压器
本文鼎阳科技探讨了为什么示波器不能直接测市电220V而要接个隔离变压器,它确实会带来下面的好处:降低电磁干扰、消除共模干扰。
技术探讨 发布时间 : 2024-11-22
示波器的FFT功能怎么调?
一文介绍示波器的FFT功能使用。信号的频率分量对信号的分析十分重要,对于观察信号的特征不仅仅需要观察时域上波形的特征,还需要在频域上观察该信号的频率分量。
技术探讨 发布时间 : 2024-01-05
【软件】鼎阳科技发布PC端示波器软件SigScopeLab 免费版,实现数据共享与远程分析
为了打破物理空间的限制,实现随时随地进行波形分析,鼎阳科技决定推出SigScopeLab软件免费版。它是一款运行于Windows操作系统的专业时域信号分析和示波器控制软件:提供与SDS高级示波器相似的用户交互界面,能够完美避免脱离实体设备的不适感;多种多窗口显示模式可供挑选,各Memory波形的水平时基可单独调节,多条波形下细节观察更清晰。
产品 发布时间 : 2024-03-11
什么是示波器真正的存储深度?
示波器的存储深度指其能保存的采样点个数,是示波器的重要参数,影响信号采集、存储和分析能力。存储深度与采样率和采样时间相互关联,存储深度越大,示波器可记录和回放的波形数据越多。示波器的最大存储深度受物理介质限制,需在菜单中设置。多通道工作时,采样率和存储深度可叠加,但为获最大采样率和存储深度,建议只打开两两叠加模式中的一个通道。使用示波器时,需综合考虑存储深度和采样率之间的平衡。
技术探讨 发布时间 : 2024-10-09
浅析数字示波器对于电子学的重要性——电子工程师的眼睛
数字示波器是电子信息工业的基础设施,是应用最广泛的基础电子测试测量仪器,被誉为电子工程师的眼睛,用于采集电路中的电信号并存储和显示,并对信号进行测量、分析和处理。
技术探讨 发布时间 : 2024-10-09
为什么示波器的探头未连接时会有波形?
介绍示波器为什么探头没接会有波形。
设计经验 发布时间 : 2024-03-18
基于两台SDS3000示波器同步产生“8通道”示波器
在很多应用场合需要4通道以上的示波器,但是市面上极大部分示波器最多只有四通道,而且没有外部输入的同步时钟接口。有什么快捷的方法获得更多通道功能的示波器? 最简便的方法是:将两台示波器的辅助输入信号作为触发源,同时连接到相同的输入信号,每台示波器的另外四个通道都分别连接到不同的待测信号,这样两台示波器就近似于等效的“8通道”示波器。连接示意图如图1所示。
设计经验 发布时间 : 2024-07-12
数字示波器的核心组件与协同工作难点
数字示波器是一个复杂的系统,其难点并非仅仅在于模数转换器(ADC)。数字示波器的难点在于各个系统的协同工作,包括ADC、前端电路和处理系统等。只有这些系统相互配合,才能实现示波器的高精度测量和快速响应。
原厂动态 发布时间 : 2024-09-25
不知道怎么选高分辨率示波器?看懂这五个要素就行
近年来,各大厂商也纷纷开始重点推广高分辨率示波器,这主要是为了迎合当前的发展趋势,比如电源行业,开关频率从几十kHz,到几百KHz,到现在甚至高达几MHz,这对示波器的带宽、采样率、分辨率都提出了更高的要求。那有这么多的品牌,这么多的型号可供选择,用户们该如何挑选呢,所以本文中鼎阳科技聊聊挑选高分辨率示波器的几大要素。
技术探讨 发布时间 : 2024-06-26
【经验】如何用示波器进行安全的市电测量?
在我们使用示波器的过程中,市电测量是许多朋友都会遇到的一个测试项目,但很多朋友在测量中就产生了不少疑问,示波器能测市电吗?示波器如何测量市电?怎么测量才安全呢?等等诸多问题,本篇文章中将为大家一一解答。
设计经验 发布时间 : 2023-10-12
数字电路测试中的示波器应用与鼎阳科技解决方案
数字电路测试是数字电路设计的重要环节,用于验证数字电路功能是否按照所期望的方式工作,通常使用示波器进行数字电路输出信号的检测,从而进行故障查找或确定电路性能和参数。鼎阳科技示波器高带宽、高采样率适合高频信号测量。能捕获瞬态信号、分析异常和特定事件、测量多路信号、解码总线信号,评估信号抖动特性,提升系统性能。
设计经验 发布时间 : 2024-09-24
电子商城
现货市场
服务
提供是德(Keysight),罗德(R&S)测试测量仪器租赁服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器租赁服务;租赁费用按月计算,租赁价格按仪器配置而定。
提交需求>
提供全面表征产品器件耗电特征及功耗波形、快速瞬态效应、电源优化、表征和仿真测试服务,使用直流电源分析仪测量精度达50µV,8nA,波形发生器带宽100kHz,输出功率300W,示波器200kHz,512 kpts
实验室地址: 深圳/苏州 提交需求>
登录 | 立即注册
提交评论