若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/167589503
长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…
Qt开发专栏:三方库开发技术
上一篇:《Qt+TieQPieHS3开发笔记(一):TiePie HS3介绍、下载sdk和基础开发环境Demo》
下一篇:敬请期待…
前言
波形数据是算法模型数据,通过设备环能将其当作信号换发射出去。
Demo
TiePie Handyscope HS3的基本开发流程
概述
使用 libtiepie-hw 库控制仪器、执行测量,需要遵循以下步骤:
- 步骤一:Initialize the library — 初始化库
- 步骤二:Update the device list — 更新设备列表
- 步骤三:Open the required device(s) — 打开所需设备
- 步骤四:Setup the Oscilloscope — 配置示波器
– Setup the oscilloscope channels — 配置示波器通道
– Setup the oscilloscope timebase — 配置示波器时基
– Setup the trigger (channels and device) — 配置触发(通道与设备) - 步骤五:Setup the Generator — 配置信号发生器
- 步骤六:Start a measurement — 启动一次测量
- 步骤七:Wait for the measurement to be ready — 等待测量就绪
- 步骤八:Retrieve the measured data — 获取测量数据
- 步骤九:Close the device(s) — 关闭设备
- 步骤十:Exit the library — 退出库
Demo实现步骤
步骤一:初始化库
用于初始化和退出库以及从库本身检索信息的函数。
加载库后,必须先对其进行初始化,然后才能使用库中的函数。在关闭库之前,当使用库的应用程序不再需要它时,必须调用tiepie_hw_fini()来清除和释放库使用的资源。
步骤二:更新设备列表
步骤三:打开所需设备
步骤四:配置示波器
步骤五·:配置信号发生器
步骤六:启动信号发生器,再启动测量
步骤七:循环检测测量,获取测量数据
步骤八:先停止使能输出
步骤九:发生器关闭输出驱动
步骤十:关闭设备
步骤十一:退出库
Demo运行结果
相关函数原型
在每个库函数调用时,都会设置一个状态标志,指示函数是如何执行的。当函数调用的行为与预期不同时,请检查状态以查找可能的原因。
- TiePie::Hardware::DeviceListItem::canOpen():以某功能打开
- TiePie::Hardware::DeviceListItem::openOscilloscope():打开示波器
- TiePie::Hardware::Oscilloscope::setMeasureMode():设置测量模式
- TiePie::Hardware::Oscilloscope::setSampleRate():设置采样率
- TiePie::Hardware::Oscilloscope::setRecordLength():设置记录长度
- TiePie::Hardware::OscilloscopeChannel::setEnabled():通道使能
- TiePie::Hardware::OscilloscopeChannel::setRange():通道测量范围
- TiePie::Hardware::OscilloscopeChannel::setCoupling():测量类型
- TiePie::Hardware::OscilloscopeChannel::start():开始测量
- TiePie::Hardware::OscilloscopeChannel::recordLength():数据长度
- TiePie::Hardware::OscilloscopeChannel::getData():获取数据
- TiePie::Hardware::DeviceListItem::openGenerator():打开发生器
- TiePie::Hardware::Generator::setSignalType():设置信号类型
- TiePie::Hardware::Generator::setFrequency():设置频率
- TiePie::Hardware::Generator::setAmplitude():设置幅值
- TiePie::Hardware::Generator::setOffset():设置偏移
- TiePie::Hardware::Generator::setOutputEnable():设置输出使能
- TiePie::Hardware::Generator::start():开始输出
Demo源码
voidHs3Manager::testGeneratorAndMeasurement(){// sdk版本LOG<<QSTRING("Library version: %1.%2.%3").arg(TIEPIE_HW_VERSION_MAJOR).arg(TIEPIE_HW_VERSION_MINOR).arg(TIEPIE_HW_VERSION_PATCH);// 步骤一: 初始化sdkTiePie::Hardware::Library::init();// 步骤二: 允许探测开启,刷新列表TiePie::Hardware::Network::setAutoDetectEnabled(true);// 步骤三: 刷新设备列表(探测刷新)TiePie::Hardware::DeviceList::update();// 步骤四: 打开第一个设备if(TiePie::Hardware::DeviceList::count()==0){LOG<<"if(TiePie::Hardware::DeviceList::count() == 0)";TiePie::Hardware::Library::fini();return;}// 步骤五:获取项目智能指针(默认返回就是智能指针)std::unique_ptr<TiePie::Hardware::DeviceListItem>pItemPtr=TiePie::Hardware::DeviceList::getItemByIndex(0);if(!pItemPtr){LOG<<"if(!pItemPtr)";TiePie::Hardware::Library::fini();return;}// 步骤六:打印设备基础信息TiePie::Hardware::DeviceListItem*pItem=pItemPtr.get();LOG<<QString("===== 设备信息 =====");LOG<<QString("设备名称:%1").arg(QString::fromStdString(pItem->name()));LOG<<QString("序列号:%1").arg(pItem->serialNumber());QStringList strList;{if(pItem->types()&TIEPIE_HW_DEVICETYPE_OSCILLOSCOPE){strList<<QSTRING("Oscilloscope(示波器)");}if(pItem->types()&TIEPIE_HW_DEVICETYPE_GENERATOR){strList<<QSTRING("Generator(信号源)");}if(strList.size()==0){strList<<QSTRING("Unknow");}}LOG<<QString("有效类型:%1").arg(strList.join(","));/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 示波器 配置部分 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/// 步骤七: 打开信号发生器std::unique_ptr<TiePie::Hardware::Oscilloscope>oscPtr;if(!pItem->canOpen(TIEPIE_HW_DEVICETYPE_OSCILLOSCOPE)){LOG<<"if(!pItem->canOpen(TIEPIE_HW_DEVICETYPE_OSCILLOSCOPE))";TiePie::Hardware::Library::fini();return;}oscPtr=pItem->openOscilloscope();if(!oscPtr){LOG<<"Failed to openOscilloscope()";TiePie::Hardware::Library::fini();return;}// 步骤八: 设置 示波器 参数TiePie::Hardware::Oscilloscope*pOsc=oscPtr.get();{LOG<<pOsc;// 设置采集模型: 块采集模式 示波器在块采集时,会持续循环往片上缓存写采样点;当触发条件满足,就停止采集pOsc->setMeasureMode(TIEPIE_HW_MM_STREAM);// 设置采样率 1MHzpOsc->setSampleRate(100);// 设置记录长度pOsc->setRecordLength(100);// 设置预触发采样比例(仅TIEPIE_HW_MMB_BLOCK块采集摸生效, 0: 触发到来那一刻,才开始采集, 50: 触发到来那一刻,总记录一半是出发前的,一半是触发后的)// pOsc->setPreSampleRatio(0);// 设置通道1constTiePie::Hardware::Oscilloscope::Channels&channels=pOsc->channels;TiePie::Hardware::OscilloscopeChannel*pChannel1=channels[0].get();{pChannel1->setEnabled(true);pChannel1->setRange(4.0);pChannel1->setCoupling(TIEPIE_HW_CK_DCV);}}/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 示波器 配置部分 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*//*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 信号发生器 配置部分 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/// 步骤七: 打开信号发生器std::unique_ptr<TiePie::Hardware::Generator>genPtr;if(!pItem->canOpen(TIEPIE_HW_DEVICETYPE_GENERATOR)){LOG<<"if(!pItem->canOpen(TIEPIE_HW_DEVICETYPE_GENERATOR))";TiePie::Hardware::Library::fini();return;}genPtr=pItem->openGenerator();if(!genPtr){LOG<<"Failed to openGenerator()";TiePie::Hardware::Library::fini();return;}// 步骤八: 设置 发生器 参数TiePie::Hardware::Generator*pGen=genPtr.get();{// 设置信号类型pGen->setSignalType(TIEPIE_HW_ST_TRIANGLE);// 设置信号频率pGen->setFrequency(100);// 100 Hz(为了让打印看到效果,可以判断数据)// 设置输出幅值pGen->setAmplitude(2);// 2 V// 设置峰值偏移pGen->setOffset(0);// 0 V// 打开硬件输出通道pGen->setOutputEnable(true);}/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 信号发生器 配置部分 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/// 步骤九: 开始发生器,开始示波器(必须要先开启发生器,否则先开启示波器会崩溃)// pGen->start();pOsc->start();// 步骤十:等待60sQElapsedTimer elapsedTimer;elapsedTimer.start();while(elapsedTimer.elapsed()<60*1000){qApp->processEvents(QEventLoop::AllEvents,1000);// LOG << elapsedTimer.elapsed() << pOsc->isDataReady();// 读取数据if(pOsc->isDataReady()){quint64 size=pOsc->recordLength();std::vector<float>buf(size);float*pBuf=&buf[0];pOsc->getData(&pBuf,1,0,size);QString str;for(intindex=0;index<size;index++){if(index==0){str+=QSTRING("%1").arg(buf[index]);}else{str+=QSTRING(",%1").arg(buf[index]);}}LOG<<"==============================================================";LOG<<size<<str;}}// 步骤十一: 停止输出波形,,但硬件输出缓冲/输出驱动仍然保持导通,输出引脚依然有电平;pGen->stop();// 步骤十二: 关断输出驱动, 等于将BNC输出断开pGen->setOutputEnable(false);// 步骤是三: 释放sdkTiePie::Hardware::Library::fini();}工程模板v1.1.0
上一篇:《Qt+TieQPieHS3开发笔记(一):TiePie HS3介绍、下载sdk和基础开发环境Demo》
下一篇:敬请期待…
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/167589503