示波器波形文件解析,github 中找到一份代码`

这篇具有很好参考价值的文章主要介绍了示波器波形文件解析,github 中找到一份代码`。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import sys
import numpy as np
import struct
from collections import namedtuple


def readfile(binFile, arg):
    """read binFile and return data as numpy array
    :binFile: path to bin file
    :arg: an int, indicate the nth waveform to read
    """
    selWav = 0
    headerFmt = "5if3d2i16s16s24s16sdI"
    headerSiz = struct.calcsize(headerFmt) 
    waveformHeader = namedtuple("waveformHeader",
        "headerSize waveformType nWaveformBuffers nPoints \
        count xDisplayRange xDisplayOrigin xIncrement \
        xOrigin xUnits yUnits dateString timeString \
        frameString waveformString timeTag segmentIndex")
    bufHeaderFmt = "ihhi"
    bufHeaderSiz = struct.calcsize(bufHeaderFmt)
    bufHeader = namedtuple("bufHeader",
        "headerSize bufferType bytesPerPoint bufferSize")

    data = None
    time = None

    try:
        fd = open(binFile, 'rb')
        magic, fileVer, fileSize, nWav = struct.unpack(
            '2s2sii', fd.read(12))

        if magic.decode('ascii') != "AG":
            sys.stderr.write("Unrecognized file format\n")
            return None, None

        if arg and arg <= nWav:
            selWav = arg

        for idx in range(nWav):
            # read waveform header
            header = waveformHeader._make(
                    struct.unpack(headerFmt, fd.read(headerSiz)))
            # skip remaining data in the header
            fd.seek(header.headerSize - headerSiz, 1)

            if idx == selWav:
                stop = header.xIncrement * header.nPoints + header.xOrigin
                time = np.linspace(header.xOrigin, stop, header.nPoints)

            for bufIdx in range(header.nWaveformBuffers):
                bufferHeader = bufHeader._make(
                        struct.unpack(bufHeaderFmt, fd.read(bufHeaderSiz)))
                if idx == selWav:
                    if bufferHeader.bufferType in [1, 2, 3]:
                        fmt = "%df" % (header.nPoints)
                    elif bufferHeader.bufferType == 4:
                        fmt = "%di" % (header.nPoints)
                    elif bufferHeader.bufferType == 5:
                        fmt = "%dB" % (header.nPoints)
                    else:
                        fmt = "%dB" % (header.bufferSize)
                    data = np.asarray(struct.unpack(
                        fmt, fd.read(struct.calcsize(fmt))))
                else:
                    # skip waveform
                    fd.seek(bufferHeader.bufferSize, 1)

        return time, data
    except IOError:
        sys.stderr.write("%s open error\n" & (binFile))
        return None, None
    finally:
        fd.close()

arg 是选择第几个波形,Header 中记录了

横坐标是时间,纵坐标是 电压值

示波器波形文件解析,github 中找到一份代码`文章来源地址https://www.toymoban.com/news/detail-504920.html

到了这里,关于示波器波形文件解析,github 中找到一份代码`的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA实现AD9708和AD9280波形收发输出HDMI模拟示波器,串口协议帧控制显示,提供工程源码和技术支持

    AD9708 很简单,8 位分辨率,125MSPS 采样率,输入参考电压3~5V,内置 1.2V 参考电压,8bit数字信号输入,差分电流输出;芯片操作不需要软件配置,给个时钟信号就工作,简单得很,根据官方手册,内部结构如下: SLEEP引脚提供芯片休眠功能,当不需要使用该芯片时可拉高SLEEP以

    2024年02月02日
    浏览(58)
  • 使用T0,方式2,在P1.0输出周期为400µs,占空比为4:1的矩形脉冲,要求在P1.0引脚接有虚拟示波器,观察P1.0引脚输出的矩形脉冲波形

    大家学过一段时间的单片机了,今天我们来说说单片机里的定时器,又叫计数器。首先,我们通过案例来了解一下什么是定时器。 作业要求 : 要求使用T0,采用方式2定时,在P1.0输出周期为400µs,占空比为4:1的矩形脉冲。 分析过程 : 从P1.0输出的矩形脉冲的高低电平的时间

    2024年02月05日
    浏览(32)
  • 【数字示波器设计】——基于FPGA的数字示波器实现

    【数字示波器设计】——基于FPGA的数字示波器实现 数字示波器是电子技术领域中非常重要的仪器之一,可以用来观察电信号的波形,是电子工程师必备的工具。而基于FPGA的数字示波器则具有高速、高精度和可编程性强等优势,成为了现代电子工程师常用的示波器。 本文将介

    2024年01月20日
    浏览(45)
  • ThunderScope开源示波器

    4CH,1GSa/S 开源示波器。前端很简洁,BUF802+LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。 设计日志:https://hackaday.io/project/180090-thunderscope 开源地址:https://github.com/EEVengers/ThunderScope discord讨论组:

    2024年02月16日
    浏览(49)
  • 示波器带宽

    示波器有很多不同规格,确定了可捕获和测量信号的准确度。但是示波器的主要规格是其带宽。 所有示波器都具有以较高频率展示的低通频率响应,如下图所示。大多数带宽规格为 1 GHz 以及更低的示波器通常具有高斯频率响应。示波器高斯频率响应近似于单极点低通滤波器

    2024年02月13日
    浏览(45)
  • STM32示波器设计

    目录 前言 1、硬件模块 2、示波器基础知识 2.1 当头一棒就是,波形的概念 2 .2 第二就是需要观察的波形参数 2.3 第三就是示波器参数 2.3.1 采样率 2.3.2 带宽 2.3.4 刷新率 3、ADC采集和DAC输出 3.1 ADC 采集实现 3.1.1 配置ADC采集为定时触发DMA采集模式 3.1.2 配置ADC关联的定时器 3.1.3 转

    2023年04月14日
    浏览(98)
  • 电脑连接示波器读取数据

    示波器型号:北京普源的RIGOL MSO4034 首先连接示波器: 连接线与示波器相连的端口如上图USB DEVICE所示,是一个比较奇怪的方形接口。连接线的另一端是标准的USB typeA接口,可以直接插在电脑上,当示波器和电脑连接时,电脑会提示安装驱动。 该型号示波器端口是业界通用的

    2023年04月08日
    浏览(55)
  • LabVIEW虚拟数字示波器

    1、简易版 1.1、生成虚拟数据 1.2、 数据参数信息 1.3、 调节时间和幅度 1.4、 调节直流偏置和增益 1.5、 数据信号频域分析 1.6、数据信号滤波 1.7、 保存波形数据 1.8、加载波形数据 1.9、停止运行 2、复杂版 2.1、调节数据信号频率、幅度、相位、偏移量和占空比 2.2、调节时

    2024年02月03日
    浏览(52)
  • 基于FPGA的示波器设计

    目录 一、设计要求 二、系统架构设计         本次基于FPGA的示波器设计主要技术要求包含以下内容: 系统能够实现模数转换功能,即包含ADC驱动模块; 系统能够实现ADC采集数据的缓存功能; 系统包含辅助测试模块,DAC数模转换模块; 系统能够实现ADC数据和LCD液晶显示数

    2024年02月14日
    浏览(41)
  • 嵌入式开发----示波器入门

    对于嵌入式工程师来说,示波器的使用极为重要,他就像是“电子工程师的眼睛”,把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等,利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用来测试电量,如电压、电流、频率、

    2024年01月18日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包