如何使用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的测试,供大家参考。
为什么示波器的探头未连接时会有波形?
介绍示波器为什么探头没接会有波形。
示波器如何测量直流电压?
不同型号的示波器在操作上可能会有细微差别,但基本原理与步骤相似,本文鼎阳科技介绍了使用示波器测量直流电压时一般遵循的步骤:连接探头、选择适当的量程、直流耦合、调整垂直设置、调整时间基准、观察波形、测量电压值。
示波器触发原理及应用介绍
本文使用SDS1204X-E示波器、SDG2122X信号源来模拟不同情况下几种常用的触发模式和触发方式的应用。触发(实际就是隔离出感兴趣的信号)是使用示波器过程中出现频率最高的几个词之一,但对于一部分不是经常使用示波器的工程师来说,他们对触发还没有深刻的了解。
SIGSCOPELAB示波器用户手册
描述- SigScopeLab是一款运行于Windows操作系统的专业时域信号分析和示波器控制软件。该软件提供安装和操作教程,支持波形数据离线分析、测量项目离线分析、远程示波器管理以及在线多示波器采集系统等功能。软件界面与SIGLENT的SDS系列示波器相同,支持多种测量和分析功能,并提供多窗口模式,使用户能够灵活地进行波形测量和分析。
示波器的FFT功能怎么调?
一文介绍示波器的FFT功能使用。信号的频率分量对信号的分析十分重要,对于观察信号的特征不仅仅需要观察时域上波形的特征,还需要在频域上观察该信号的频率分量。
解析示波器阈值电平对测试结果的影响
现代数字示波器基本内置了丰富的参数测量功能,用户可以借助参数测量功能以更好地对被测信号进行分析并选取出自己感兴趣的测量项。默认的测量配置可以满足大部分情况下的测试需求,但如果需要针对待测信号进行更为精准的测量则需要根据待测信号的特点手动进行测量设置的调整,如幅度计算策略、测量门限和阈值电平等。本文鼎阳科技为大家介绍示波器阈值电平对测试结果的影响。
【软件】鼎阳科技发布PC端示波器软件SigScopeLab 免费版,实现数据共享与远程分析
为了打破物理空间的限制,实现随时随地进行波形分析,鼎阳科技决定推出SigScopeLab软件免费版。它是一款运行于Windows操作系统的专业时域信号分析和示波器控制软件:提供与SDS高级示波器相似的用户交互界面,能够完美避免脱离实体设备的不适感;多种多窗口显示模式可供挑选,各Memory波形的水平时基可单独调节,多条波形下细节观察更清晰。
示波器 、频谱仪和网络分析仪的区别?
示波器、频谱仪和网络分析仪各有什么不同?各自的原理是什么?本文鼎阳科技来为大家介绍一二,希望对各位工程师朋友有所帮助。
如何使用示波器FFT功能测量调幅信号的调制深度?
在幅度调制中,调制深度是指调制信号和载波信号的振幅比。借助快速傅里叶变化,调制深度可以通过测量边带幅度和载波幅度来得到。在这篇应用文档中,我们将要展示一种使用新峰值/标记功能(在鼎阳X-E系列数字示波器的6.1.31版本上可以看到)的便捷方式来测量调制深度。
不知道怎么选高分辨率示波器?看懂这五个要素就行
近年来,各大厂商也纷纷开始重点推广高分辨率示波器,这主要是为了迎合当前的发展趋势,比如电源行业,开关频率从几十kHz,到几百KHz,到现在甚至高达几MHz,这对示波器的带宽、采样率、分辨率都提出了更高的要求。那有这么多的品牌,这么多的型号可供选择,用户们该如何挑选呢,所以本文中鼎阳科技聊聊挑选高分辨率示波器的几大要素。
解析减少或去除示波器波形毛刺的相关方法
示波器波形出现毛刺,可能是信号本身噪声或示波器自身问题所致。本文鼎阳科技解析了减少或去除示波器波形毛刺的相关方法。针对两种出现毛刺的原因进行了分析,包括:被测信号本身确实存在毛刺、示波器或环境带来的毛刺。
基于两台SDS3000示波器同步产生“8通道”示波器
在很多应用场合需要4通道以上的示波器,但是市面上极大部分示波器最多只有四通道,而且没有外部输入的同步时钟接口。有什么快捷的方法获得更多通道功能的示波器? 最简便的方法是:将两台示波器的辅助输入信号作为触发源,同时连接到相同的输入信号,每台示波器的另外四个通道都分别连接到不同的待测信号,这样两台示波器就近似于等效的“8通道”示波器。连接示意图如图1所示。
解析调节振幅大小时影响示波器波形稳定的原因
当示波器的波形稳定后,若对振幅大小进行调节,致使波形变得不稳定,这其中涉及到一系列与示波器触发机制相关的复杂原理。本文鼎阳科技就来给大家解析调节振幅大小时影响示波器波形稳定的原因。
解析为什么示波器不能直接测市电220V而要接个隔离变压器
本文鼎阳科技探讨了为什么示波器不能直接测市电220V而要接个隔离变压器,它确实会带来下面的好处:降低电磁干扰、消除共模干扰。
电子商城
现货市场
服务
提供是德(Keysight),罗德(R&S)测试测量仪器租赁服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器租赁服务;租赁费用按月计算,租赁价格按仪器配置而定。
提交需求>
朗能泛亚提供是德(Keysight),罗德(R&S)等品牌的测试测量仪器维修服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器维修,支持一台仪器即可维修。
提交需求>
登录 | 立即注册
提交评论