Qt用tcpsocket向E4440A频谱仪发送命令遇到的问题

QT实现射频自动校准软件 设置信号源输出功率:POW:AMPL-50dbm设置信号源输出频率:FREQ150MHz设置信号源扫描开始频率:FREQ:STARmHz\设置信号源扫描结束频率:FREQ:STOP设置扫描点数:SWE:POIN 1001设置扫描时间:SWE:DWEL0.01开始扫描:FREQ:MODE LIST结束扫描:FREQ:MODECW设置ALC Control:pow:att:auto on(关)设置参考功率值:DISP:WIND:TRAC:Y:RLEV15dbm。清除相对值:CALC:MARK:MODEPOS。 阅读详情

Qt用tcpsocket向E4440A频谱仪发送命令遇到的问题

问题1:官方使用手册中的命令不能用

比如使用手册获取Y的值是使用:CALC:PST:MARK1:Y?
在这里插入图片描述
我们用这个命令测试根本没有返回值,在网上搜相关文档,使用:CALC:MARK1:Y?才能正确获取Y值。其实使用手册里很多例出来的命令都不能直接用。
我找到的可以使用的命令文档如下:
链接: 安捷伦34970、53220、特尔斯特FSH4、普源DSA800常用采集测量仪器介绍与控制

链接: python操作频谱仪(是德科技N9030B)

问题2:使用tcpsocket的write()函数向频谱仪写多条命令,数据获取不正确。

我需要让频谱仪
1.改变中心频率,
2.Maker改成中心频率,
3.再获取marker值
每条命令单独发都能让频谱仪正常调整,但是将这三条语句带入代码里面就不行了。最先我想的是,可能命令发送太快,导致频谱仪反应不过来,所以添加了线程休眠,但是无济于事,代码如下:

if(tcpsocket!=nullptr){
        QString zhongxinpinglv="SENS:FREQ:CENT ";
        zhongxinpinglv.append(str1).append("MHz\n");
        tcpsocket->write(zhongxinpinglv.toUtf8());
        std::this_thread::sleep_for(std::chrono::seconds(2));//线程休眠1s钟
        QString makerpl="CALC:MARK1:X";
        makerpl.append(" ").append(str1).append("MHz\n");
        tcpsocket->write(makerpl.toUtf8());
        std::this_thread::sleep_for(std::chrono::seconds(2));//线程休眠1s钟
        tcpsocket->write("CALC:MARK1:Y?\n");
        QString str = QString::asprintf("%.2lf", readData);
        ui->textBrowser->append("获得Y值:"+str);
    }else {
        ui->textBrowser->append("没有建立连接");
    }

由于没有频谱仪,我自己写了个接收命令的接收端,发现连续使用三个write函数,tcpsocket会先缓存,然后把三条命令一起发出去。
在这里插入图片描述
这时怀疑一起发送,导致数据获取异常。于是就得找到命令写一条,发一条发的方式,经过多方查找,可以使用tcpsocket->flush()这个函数,强制将缓冲区中的数据发送出去。

QString zhongxinpinglv="SENS:FREQ:CENT ";
zhongxinpinglv.append(cell->readValue().toString()).append("MHz\n");
tcpsocket->write(zhongxinpinglv.toUtf8());
tcpsocket->flush();//使用write()后直接使用flush(),就能将刚才写入的发送出去。

但是国庆在家没有频谱仪,所以至于能不能正确获取marker的Y值还有待各位加班的小伙伴考证😁。

问题3:从服务端发送过来的marker,只有第一次接收数据能触发ReadyRead()函数

多方查找原因是接收也有缓冲区,解决方法为把缓冲区字节数变小。

但是在此期间,询问了我的同事,真实原因是单线程造成的,一个线程发送数据,一个线程用于接收数据才行。

于是乎开始学习多线程ing

模拟频谱分析仪(Linux c++ Qt) 理论无连接协议,发送数据前不需要建立连接不保证数据顺序和可靠性,但传输效率高适合实时性要求高、可容忍少量丢失的场景(如视频流、实时游戏)基础实现// 创建UDP socket// 设置地址重用// 绑定端口// 异步接收// 处理接收数据}); 阅读详情

相关推荐

qt-spek:基于Qt的频谱分析器,修改于spek

qt-spek:基于Qt的频谱分析器,修改于spek

项目【QT5.13频谱分析软件】(二)——项目框架搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数..

小白技术栈 3742

一个用Qt来绘制频谱图

基于Qt4.5的一个频谱绘制源码,下载后编译,运行即可

基于python pyvisa模块控制GPIB设备识别不到设备资源号问题

基于python pyvisa模块和GPIB(Agilent Technologies 82357B USB/GPIB Interface USB2.0)控制仪器找不到资源号问题处理方法

wutongfu01的博客 3604

Qt绘制频谱

Qt绘制音频文件频谱的源代码,供学习物理仪器仪表波形参考。在windowsxp,Qt4,Qt Creator,MinGw环境编译运行成功。

基于Qt的声波图形界面动态绘制

基于Qt的声波图形界面的动态绘制,底层使用图片递增绘制,内存使用最少,效率最高。

基于QT的信号处理系统(信号的时域图、频谱图、余辉图、时间功率图、瀑布图分析以及跳频时频分析和网台分选)

本系统主要实现电磁信号的频谱监测、跳频检测和跳频网台分选功能,其中频谱监测包括信号时域波形图、频谱图、时间功率图、瀑布图和余辉图,跳频网台分选可完成各跳频信号的跳速和频率集估计,实现跳速和频率集的直方图统计。

qq_34410201的博客 6827

Qt OPengl 雷达余晖效果

这个只是一点简单的OPengl测试代码,不是正式开发的代码,主要就是使用OPengl绘制雷达,和是雷达扫描余晖效果 有需要的可以参考一下,或许将实现更多功能

【亲测免费】 QSpectrumAnalyzer: 动态频谱分析的利器

是一个开源的、实时的、基于Qt和Qwt库的频谱分析工具。它设计简洁,功能强大,适用于软件定义无线电(SDR)应用中的信号分析和调试。 ## 技术分析 ### 基于Qt QSpectrumAnalyzer 使用 Qt 框架构建,这使得它能在多种操作系统上运行,包括 Windows, macOS 和 Linux。Qt 提供了跨平台的图形用户界面(GUI)开发能力,让开发者能够轻松创建美观且一致的...

gitblog_00098的博客 1486

Python控制安捷伦信号源频谱仪自动扫频测试程序

可修改仪器ip地址 扫频中心频率 扫频带宽 扫频步进 读取峰值 拟合谱线 目前已实现的有安捷伦信号源N5173B 安捷伦频谱仪E4440A 有问题可私信 能力范围内也可帮忙修改

Colmap参数调优实战:如何通过5个关键设置提升3D重建精度

本文深入探讨Colmap参数调优实战,通过5个关键设置显著提升3D重建精度。重点解析特征匹配参数、BA优化配置、初始化策略、资源分配及动态调整方法,结合量化数据和实际案例,帮助开发者精准优化重建流程,适用于古建筑扫描、无人机航拍等多种场景。

weixin_30872157的博客 432

上位机使用python/matlab通过网线VISA/SCPI编程远程控制旧版A.06.04.32的安捷伦agilent矢量网络分析仪(VNA)采集S21参数

近日需要通过上位机连接矢网采数,但是可用的矢网只有一个零几年的矢网安捷伦 agilent e8363b。一开始想使用labview,但是使用NI MAX控制不成功(问题在instrument VISA Address),只好自己从底层控制(如果你的NI MAX能成功,可以直接使用labview控制呢)。本来想通过GPIB来控制,但是实验室没有GPIB转USB的线。一看矢网上有网口,故...

他年得傍蟾宫客 1万+

OK3588-C开发板Forlinx Desktop系统烧录与多媒体功能实战

本文详细介绍了OK3588-C开发板Forlinx Desktop系统的烧录步骤与多媒体功能实战。从硬件准备到软件工具配置,逐步解析RKDevTool烧录技巧,并深入测试摄像头、视频编解码及音频功能,帮助开发者快速掌握RK3588芯片的强大性能与Ubuntu系统的优化应用。

weixin_29190169的博客 417

项目【QT5.13频谱分析软件】(五)——总篇

需要完整源码的可以留言邮箱,或者关注微信公众号小白技术栈 | lakalako,后台回复【qt5频谱分析】获取完整源码,欢迎大家关注哦! 经过前面几小节我们已经完成了基本的功能,本节将对剩余部分及前几节内容进行整合。 一、前景回顾 项目【QT5.13频谱分析软件】(一)——开篇 项目【QT5.13频谱分析软件】(二)——项目框架搭建 项目【QT5.13频谱分析软件】(三)——线程获取Excel表格数据 项目【QT5.13频谱分析软件】(四)——数据动态波形显示 二、波形暂停、开始...

小白技术栈 6883

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件)

本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。

weixin_29190169的博客 591

GNSS接收机性能测试指标详解:TTFF、位置精度、灵敏度等关键参数如何评估

本文详细解析了GNSS接收机性能测试的关键指标,包括首次定位时间(TTFF)、位置精度、灵敏度等,帮助工程师系统评估接收机性能。通过多频段协同定位和载波相位测试等技术,提升定位精度至亚米级。同时,介绍了灵敏度测试的极限挑战和授时精度的专业测试方案,为GNSS接收机的性能优化提供实用指导。

cuda7parallel的博客 962

QT利用realtimechart画波形图

QT波形图 源码地址:https://download.youkuaiyun.com/download/weixin_44058978/10866932

weixin_44058978的博客 1506

Zemax操作40--序列模式中LD光源模拟

LD模拟

lzy750750的博客 9119

远程控制频谱仪

1,首先采用Telnet协议连接频谱, fsv = Telnet(env.ip_FSV, env.port_FSV); 其中ip是频谱仪的远程控制ip号;port是端口号; 2,读频谱的功率和ACLR值 send(‘CALC:MARK:FUNC:POW:RES? MCAC’) 3,只要连接了频谱仪,可以用远程控制命令对它进行操作,例如设置频率,带宽,衰减值等等 ...

qq_39703212的博客 2825

CiteSpace基础操作(CNKI数据的导入分析)(一)

1 Cite Space简单介绍 2 文献导入 2.1 打开知网,选择高级检索

m0_50990607的博客 5万+

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

QT频谱图绘制之-瀑布图

简要介绍 玩SDR都会接触到一类频谱图–无线电信号在图上如瀑布般落下,这样会很清晰地让玩家确定哪些频段的能量值最明显,从而更容易地锁定其他玩家的电台,这里不讨论怎样去玩SDR,而是想探寻一下怎么使用QT绘制这样的图。 基本原理 一般频谱数据采集设备上报频率很是迅猛,不能简单得上报一批数据就重绘整个页面,而是采用缓存机制,现将数据追加到RGB32格式的QImage中,为了提高速度,最好的方式是...

zhaohongping01的专栏 1万+

【案例讲解】LVGL关于旋转的配置

在实现项目中,因为横竖屏的关系,需要对其做90度的旋转。配置旋转时发现一些局部刷新控件,旋转后效果不对。异常图标正常图标。

Bigan(安)的博客 4284

QSpectrumAnalyzer 使用

QSpectrumAnalyzer 这是一个简单频谱仪 项目地址: https://github.com/xmikos/qspectrumanalyzer 安装这个软件之前假设 limesuite,soapysdr,gnuradio 等环境已经搭建好正常运行。 安装: sudo apt-get install python3-pip python3-pyqt4 python3-numpy s...

Etual的专栏 2042

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Qt QBuffer 详解:内存缓冲区读写与实战用法

QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 542

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Liunx系统输出的内容超出命令界面右边边界,无法查看的解决方式。
下一篇: Python基础学习笔记
码龄5年的落魄程序员
博客等级 码龄8年 45粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值