如何使用Kotlin从XE系列示波器中检索数据?
![示波器,SDS,SDS1202X-E,鼎阳科技](https://www.sekorm.com/front/website/images/sekormContent.jpg)
![示波器,SDS,SDS1202X-E,鼎阳科技](https://www.sekorm.com/front/website/images/sekormContent.jpg)
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
以SDS800XHD 12bit示波器为例,讲解如何正确测量电源纹波?
如果想要测量电源纹波,示波器是最常用的设备,而合适的示波器设置、测量方法是保证正确测量电源纹波的关键。首先,由于纹波和噪声幅度都比较小,所以我们需要一台精度高的示波器,这次我们选择了SDS800XHD 12bit示波器来进行测试。
设计经验 发布时间 : 2024-09-07
示波器如何测量直流电压?
不同型号的示波器在操作上可能会有细微差别,但基本原理与步骤相似,本文鼎阳科技介绍了使用示波器测量直流电压时一般遵循的步骤:连接探头、选择适当的量程、直流耦合、调整垂直设置、调整时间基准、观察波形、测量电压值。
设计经验 发布时间 : 2024-08-24
示波器触发原理及应用介绍
本文使用SDS1204X-E示波器、SDG2122X信号源来模拟不同情况下几种常用的触发模式和触发方式的应用。触发(实际就是隔离出感兴趣的信号)是使用示波器过程中出现频率最高的几个词之一,但对于一部分不是经常使用示波器的工程师来说,他们对触发还没有深刻的了解。
技术探讨 发布时间 : 2023-10-13
【软件】鼎阳科技发布PC端示波器软件SigScopeLab 免费版,实现数据共享与远程分析
为了打破物理空间的限制,实现随时随地进行波形分析,鼎阳科技决定推出SigScopeLab软件免费版。它是一款运行于Windows操作系统的专业时域信号分析和示波器控制软件:提供与SDS高级示波器相似的用户交互界面,能够完美避免脱离实体设备的不适感;多种多窗口显示模式可供挑选,各Memory波形的水平时基可单独调节,多条波形下细节观察更清晰。
产品 发布时间 : 2024-03-11
示波器的FFT功能怎么调?
一文介绍示波器的FFT功能使用。信号的频率分量对信号的分析十分重要,对于观察信号的特征不仅仅需要观察时域上波形的特征,还需要在频域上观察该信号的频率分量。
技术探讨 发布时间 : 2024-01-05
【经验】如何用示波器进行安全的市电测量?
在我们使用示波器的过程中,市电测量是许多朋友都会遇到的一个测试项目,但很多朋友在测量中就产生了不少疑问,示波器能测市电吗?示波器如何测量市电?怎么测量才安全呢?等等诸多问题,本篇文章中将为大家一一解答。
设计经验 发布时间 : 2023-10-12
为什么示波器的探头未连接时会有波形?
介绍示波器为什么探头没接会有波形。
设计经验 发布时间 : 2024-03-18
每周问答 | 示波器FFT功能能用来做EMI预兼容测试吗?
鼎阳硬件设计与测试智库(简称鼎阳硬件智库)由深圳市鼎阳科技股份有限公司领衔创办,是中国第一家“智力众筹”模式的硬件智库。
技术探讨 发布时间 : 2024-08-20
【经验】手把手教你用示波器进行电源功率分析
功率分析把电源质量及谐波等性能参数均作了详细测试且测量结果符合要求。以六位半万用表为测量参考也证明了示波器的测量非常精准。因为示波器的带宽和采样率都很高,所以示波器不但可以做稳定分析,还可以做瞬态参数测试。
设计经验 发布时间 : 2023-10-09
如何使用示波器FFT功能测量调幅信号的调制深度?
在幅度调制中,调制深度是指调制信号和载波信号的振幅比。借助快速傅里叶变化,调制深度可以通过测量边带幅度和载波幅度来得到。在这篇应用文档中,我们将要展示一种使用新峰值/标记功能(在鼎阳X-E系列数字示波器的6.1.31版本上可以看到)的便捷方式来测量调制深度。
设计经验 发布时间 : 2024-07-09
【经验】一文教你如何获得“8通道”功能的示波器?
在很多应用场合需要4通道以上的数字示波器,但是市面上极大部分示波器最多只有四通道,而且没有外部输入的同步时钟接口。那有什么快捷的方法获得更多通道功能的示波器?将两台数字示波器的辅助输入信号作为触发源,同时连接到相同的输入信号,每台数字示波器的另外四个通道都分别连接到不同的待测信号,这样两台示波器就近似于等效的“8通道”示波器。
设计经验 发布时间 : 2020-01-16
【经验】示波器幅频特性曲线的绘制方法有哪些?如何避免测试过程中出现误差?
在示波器行业,并没有一个规范来要求示波器的幅频特性曲线在带宽范围以内和理想曲线之间偏差控制在多大。只要在带宽范围以内,任何量程下的任何频率点的正弦信号的输出电压大小不降低到输入的70.7%以下都认为该示波器的带宽是满足要求的。鼎阳科技新推出的电商专品示波器SDS1102E的幅频特性曲线。SDS1102E的实际带宽可以达到120MHz以上。在120MHz时的幅值衰减还不到2dB。
设计经验 发布时间 : 2020-05-18
示波器和万用表测量电压时,哪种仪器更准确?
在实际应用中,选择使用示波器还是万用表进行电压测量,应根据具体的测量需求和场景来决定。若追求极高的测量准确度,万用表往往是首选;若需要同时观测信号的波形特征以及相关参数,示波器则能发挥其独特的优势。
设计经验 发布时间 : 2024-07-23
电子商城
现货市场
服务
![](https://files.sekorm.com/opt/fileStore/srms/serviceManage/icon/2023/03/090c095435e0726a2244b08267cdaa27.png)
提供是德(Keysight),罗德(R&S)测试测量仪器租赁服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器租赁服务;租赁费用按月计算,租赁价格按仪器配置而定。
提交需求>
![](https://files.sekorm.com/opt/fileStore/srms/serviceManage/icon/2022/08/20afd0384d0f8bf7046fcc4f273a702c.png)
提供全面表征产品器件耗电特征及功耗波形、快速瞬态效应、电源优化、表征和仿真测试服务,使用直流电源分析仪测量精度达50µV,8nA,波形发生器带宽100kHz,输出功率300W,示波器200kHz,512 kpts
实验室地址: 深圳/苏州 提交需求>
登录 | 立即注册
提交评论