Python控制LitePoint IQxel-MW 无线网络测试仪

news2024/12/22 23:40:25

前言

由于项目需要进行WIFI和BT(蓝牙)的射频测试,所以需要开发一款支持WIFI/BT射频测试的工具。开发射频测试工具的话那肯定离不开仪表的控制。我们项目用的就Litepoint的IQxel-MW无线网络测试仪。这篇文章主要就是介绍一下如何控制仪表以及实现的过程!

IQxel-MW仪器介绍

LitePoint是美国硅谷的一家仪器厂商,主要做一些无线通讯测试仪表,包括WIFI,BT(Bluetooth),LTE等等。IQxel-MW是一款支持WIFI/Bluetooth射频测试的仪表,图片如下:

实现原理

一般的测量仪表都会同时GPIB或者Ethernet或者RS232等等通信方式,但是该仪表没有GPIB接口,可以看出不支持GPIB通信,所以最后控制该仪表的方式是通过Ethernet通信的,通过Ethernet建立Socket连接,然后即可收发指令,实现PC和仪表的通信。

射频测试的接线图如下:

要想实现PC和仪表的通信,首先要确保PC和仪表的IP地址在同一网段,

代码概要

建立连接

控制仪表的第一步就是建立与仪表的连接,建立Socket连接,返回socket对象

	def _open_tester_connection(cls, ipAddress=None, port=None, timeout=None):
		ipAddress = cls._ip if ipAddress is None else str(ipAddress)
		port = cls._port if port is None else int(port)

		cls._validate_ipAddress(ipAddress)
		connectParams = (ipAddress, port)

		try:
			cls._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
			cls._socket.connect(connectParams)
			cls._socket.settimeout(timeout)
		except socket.error:
			raise AssertionError('Setup socket connection failed')
		else:
			cls._lock_device(ipAddress)

		return cls._socket

 发送指令

封装一个发送指令的底层函数,供其他函数调用

	def _send_raw_command(cls, cmd, repeat=5):
		cmd = str(cmd)
		repeat = int(repeat)
		resp = None

		while repeat:
			resp = cls._send_tcp_data(data=cmd)
			if not cls._error_occurred():
				#logger.info('Command {:s} was sent successfully'.format(cmd))
				break
			repeat -= 1

		return resp

初始化设备

在使用设备之间需要先初始化设备,因为设备上可能存在之前的设置参数,不初始化的话可能会影响测试结果;所以每次连接设备时都建议做一次初始化的动作。

	def _initialize_device(cls):
		try:
			cls._send_raw_command('SYS;*CLS;*RST;FORM:READ:DATA ASC')
		except Exception as err:
			raise TestDeviceError('Error during initializing device: {:s}'.format(err))

VSA Hardware Setting

这里以WIFI的TX测试的设置,也就是VSA的设置为例,网页如下,包含频率,参考电平,测量间隔,采样率,抓包长度等参数。实现的方法如下:

	def config_vsa_hardware_settings(self, freq=None, referLevel=None, enableAGC=None, interval=None, samRate=None, capLength=None):
		"""
		This function can be used for WiFi SISO and Bluetooth hardware VSA Settings.
		"""

		freq = int(freq) if freq is not None else freq
		referLevel = int(referLevel) if referLevel is not None else referLevel
		enableAGC = robottypes.is_truthy(enableAGC) if enableAGC is not None else enableAGC
		interval = int(interval) if interval is not None else 5
		samRate = Utils.to_enum(samRate, SamplingRate) if samRate is not None else samRate
		capLength = int(capLength) if capLength is not None else capLength

		vsaParams = []

		if freq is not None:
			vsaParams.append('FREQ {}'.format(freq * 1000000))

		if enableAGC is not None:
			vsaParams.append('RLEV:AUTO')
		else:
			if referLevel:
				vsaParams.append('RLEV {}'.format(referLevel))

		if samRate is not None:
			vsaParams.append('SRAT {}'.format(samRate.value * 1000000))

		if capLength is not None:
			vsaParams.append('CAPT:TIME {}'.format(capLength / 1000))

		if len(vsaParams) >= 1:
			self.send_raw_command('VSA1;{:s}'.format(';'.join(vsaParams)))
		else:
			logger.error('No command sent, no parameter was set')

 网页上其他功能的设置也是同样的道理,首先需要在官方手册中找到每个功能相应的SCPI命令,然后通过前面提到的发送指令的函数即可完成相关设置:

支持的设备

IQxel-MW, IQxel-M

后记

对于WIFI/BT的射频测试工具来说控制测量仪表只是其中的一部分,更重要的一部分则是对不同芯片平台的WIFI/BT信号输出的控制。WIFI部分又分为IEEE.802.11a, IEEE.802.11b, IEEE.802.11g, IEEE.802.11n, IEEE.802.11ac, IEEE.802.11ax,等等

对于BT部分来说又分为BR, EDR, LE等不同制式!这些大家可自行百度,此处不过多赘述!

有需要源码的同学可以私聊我,或者直接wx加 xgh321324即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初探core组件:opencv - core组件进阶

core组件进阶 1.访问图像中的像素1.1 图像在内存之中的存储方式1.2 颜色空间缩减1.3 LUT函数:Look up table1.4 计时函数 2. ROI区域图像叠加&图像混合2.1 感兴趣区域:ROI2.2 ROI案例2.2 线性混合操作2.3 计算数组加权和:addWeighted()函…

python-segno:二维码制作

目录 二维码版本 微二维码、数据掩码、数据流、模式 微二维码 数据掩码 数据流 二维码模式 二维码背景 二维码参数 helpers方法 其他库制作及二维码读取:python生成和读取二维码_觅远的博客-CSDN博客 安装:pip install segno import segnoqr …

Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131244269 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

经典30个嵌入式面试问题

经典30个嵌入式面试问题 嵌入式系统的面试经典问题有很多,以下是其中的30个常见问题: 1. 什么是嵌入式系统? 2. 嵌入式系统和普通计算机系统有什么区别? 3. 嵌入式系统的主要应用领域有哪些? 4. 嵌入式系统的设计…

接口测试工具之postman

概念 接口测试是什么? 百度百科给出的解释是: 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间…

构造函数初始化列表的问题

构造函数初始化列表的问题 无法按照表达式中的算符来修改值原因基本原则由此引申的问题使用初始化列表对类成员初始化在构造函数中赋值对类成员初始化 针对构造函数传参,使用引用的情况使用初始化列表对类成员初始化在构造函数中赋值对类成员初始化 将属性也使用引用总结 无法按…

STM32开发——看门狗

目录 1.独立看门狗 1.1需求 1.2CubeMX设置 1.3函数代码 2.窗口看门狗 2.1需求 ​2.2WWDG配置: 2.3函数代码 3.独立看门狗和窗口看门狗的异同点 1.独立看门狗 监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。 独立看门狗本质 本…

6、DuiLib控件消息响应处理

文章目录 1、DuiLib控件消息响应处理2、基本的消息响应处理 Notify3、仿 MFC 形式消息响应 DUI_DECLARE_MESSAGE_MAP4、事件委托 MakeDelegate5、消息捕获&#xff08;拦截&#xff09;原生消息 HandleMessage 1、DuiLib控件消息响应处理 <?xml version"1.0" en…

软件测试基础教程学习3

文章目录 软件质量与测试3.1 软件质量问题的原因3.2 对软件质量特性的理解3.3 基于软件质量特性的测试3.4 软件能力成熟度模型&#xff08;CMM&#xff09; 软件质量与测试 3.1 软件质量问题的原因 软件质量问题的原因有以下几种&#xff1a; 软件本身的特点和目前普遍采用的…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(五):芯片型号

前言 随着汽车四化的推进,可以说汽车仪表也变成越来越智能化的一个ECU部件了。市面上的车型很多,油车发展了很多年,都有仪表,电车也发展起来了,车型也非常丰富,也都有仪表。仪表现在是作为多屏中一个屏存在的,现在车上最多的就是屏了,最大的要算中控屏了,有的还有空调…

【基础】MQTT -- MQTT 协议详解

【基础】MQTT -- MQTT协议详解 与 Broker 建立连接CONNECT 数据包CONNACK 数据包 断开连接DISCONNECT 数据包 订阅与发布PUBLISH 数据包SUBSCRIBE 数据包SUBACK 数据包UNSUBSCRIBE 数据包UNSUBACK 数据包 本文内容针对 MQTT 3.1.1 版本&#xff0c;从连接、发布与订阅等方面对协…

OpenCV做个熊猫表情

有的时候很想把一些有意思的图中的人脸做成熊猫表情&#xff0c;但是由于不太会ps&#xff0c;只能无奈放弃&#xff0c;so sad... 正好最近想了解下opencv的使用&#xff0c;那就先试试做个简单的熊猫表情生成器把~~ 思路就是&#xff0c;工具给两个参数&#xff0c;一个是人…

最小系统板STM32F103C8T6烧录程序指南

STM32F103C8T6烧录程序 【购买链接】&#xff1a;STM32F103C8T6最小系统板 方法一&#xff1a;使用SWD模式烧录 此时BOOT0 0&#xff0c;BOOT1 X&#xff08;任意&#xff09;&#xff0c;跳线帽接法如下图所示 接好后&#xff0c;若手边有STLINK的话&#xff0c;可以使用…

DAY25:二叉树(十五)修剪二叉搜索树+有序数组转换为二叉搜索树+二叉搜索树转化为累加树

文章目录 669.修剪二叉搜索树思路错误代码示例最开始的写法debug测试逻辑错误&#xff1a;需要两次递归的原因内存操作报错&#xff1a;操作了已经被删除的内存的指针&#xff08;力扣平台delete操作的问题&#xff0c;放IDE里就好了&#xff09;打日志debug示例 力扣平台delet…

高并发之限流-RateLimiter

背景 限流是保护高并发系统的三把利器之一&#xff0c;另外两个是缓存和降级。限流在很多场景中用来限制并发和请求量&#xff0c;比如说秒杀抢购&#xff0c;保护自身系统和下游系统不被巨型流量冲垮等。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进…

华为OD机试之 ABR 车路协同场景(Java源码)

ABR 车路协同场景 题目描述 数轴有两个点的序列 A{A1&#xff0c; A2, …, Am}和 B{B1, B2, ..., Bn}&#xff0c; Ai 和 Bj 均为正整数&#xff0c; A、 B 已经从小到大排好序&#xff0c; A、 B 均肯定不为空&#xff0c; 给定一个距离 R&#xff08;正整数&#xff09;&a…

一文详解!Selenium浏览器自动化测试框架

目录 前言&#xff1a; selenium简介 介绍 功能 优势 基本使用 获取单节点 获取多节点 节点交互 动作链 执行JavaScript代码 获取节点信息 切换frame 延时等待 前进和后退 cookies 选项卡管理 异常处理 选项卡切换 无头浏览器 前言&#xff1a; Selenium是…

双功能螯合剂:NOTA-C6-amine,NOTA-C6-氨基,含有大环配体NOTA和氨基

文章关键词&#xff1a;双功能螯合剂&#xff0c;大环化合物 【产品描述】 西安凯新生物科技有限公司供应的​NOTA-C6-amine中含有大环配体NOTA和氨基&#xff0c;其中氨基与羧酸、活化的 NHS 酯、羰基&#xff08;酮、醛&#xff09;等反应。NOTA及其衍生物是新型双功能整合剂…

【Android】移动端设备介绍(工业手持机)

系列文章 【Android】移动端设备介绍&#xff08;工业手持机&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130604517 【Android】开发”打地鼠“小游戏 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129…

华为OD机试之检查是否存在满足条件的数字组合(Java源码)

检查是否存在满足条件的数字组合 题目描述 给定一个正整数数组&#xff0c;检查数组中是否存在满足规则的数字组合 规则&#xff1a;A B 2C 输入描述 第一行输出数组的元素个数。 接下来一行输出所有数组元素&#xff0c;用空格隔开。 输出描述 如果存在满足要求的数…