当前位置: 首页 > news >正文

python实现TCP Socket控制测试仪器

python实现TCP Socket控制测试仪器

  • 说明
  • 前提条件
    • 代码

说明

本例是用python实现TCP Socket,最终目的是为了控制LCR电容测试仪器。

前提条件

  • 测试仪器 配备了以太网接口,支持TCP/IP协议栈
    • 用户可以通过IP地址和端口号连接到仪器,建立TCP通信
  • Python及socket包

代码

# 导入依赖包
import socket# 获取socket套接字对象:供后续通信
def get_socket(ip_str, port):# 设置默认超时时间:避免网络通信卡死。若5秒内未能完成操作(如连接、读取数据),会抛出异常socket.setdefaulttimeout(5)# 创建一个基于 IPv4 的 TCP 套接字,支持点对点可靠连接tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# ip地址 和 端口 进行连接server_addr = (ip_str, port)    # 具体地址和端口得看仪器tcp_socket.connect(server_addr)# tcp_socket.recv_into()return tcp_socket# 发送仪器指令:socket套接字对象, 仪器命令字符串
def socket_send_cmd(tcp_socket, cmd):# 构建待发送命令字符串,命令以"\r\n"结尾:LCR仪器通常以标准通信协议(如 SCPI)解析命令,要求命令以 \r\n(回车+换行)结束。send_str = cmd + "\r\n"# 使用sendall将数据完整发送至远端设备,即便数据量较大,也能确保发送完成tcp_socket.sendall(send_str.encode('utf-8'))# 发送空字节以确保发送结束tcp_socket.send(b"")# 获取仪器返回结果:socket套接字对象
def socket_read_result(tcp_socket):while True:  # 无限循环,直到读取到完整结果try:global read_buf_g   # 声明全局变量,用于存储读取的缓冲数据result = tcp_socket.recv(256).decode('utf-8')   # 从套接字中读取最多256字节数据if "\n" in result:  # 判断是否接收到完整行数据符号\n(行以“\n”换行符结束)# 缓冲“\n”后的信息留给下一次拼接完整信息tmp = result[result.find("\n")+1:]  # +1:是为了去掉\n# 拼接完整返回信息:# 将前面缓冲的数据 跟 这次读取数据‘\n’ 前面的数据 拼接result = read_buf_g + result[:result.find("\n")]# 把上面缓冲的信息放在全局变量中,方便下次获取read_buf_g = tmp# 退出循环,返回结果break# 如果本次接收信息还没有完整信息标志\n的话,则把信息加入缓存当中read_buf_g += resultexcept Exception:print("34 read timeout")    # 若发生异常(如超时),打印提示信息并继续尝试读取continuereturn result# 本例LCR电容测试仪器的ip设为 169.254.1.22,端口为5025
ser_dev = get_socket("169.254.1.22",5025)
# 发生测量指令(SCPI指令)
socket_send_cmd(ser_dev, ":FETC?")
# 获取结果
rd_data = socket_read_result(ser_dev)
# 打印结果
print(rd_data)

相关文章:

python实现TCP Socket控制测试仪器

python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket,最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口,支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器,建立TCP通信…...

51c自动驾驶~合集38

我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示!爆拉3D检测、Occ、高精地图等四大任务! 受Tesla的技术的推动,越来越多的厂商开始走"纯视觉"的路线,多数方案还…...

电脑显示器拔插DVI线后副屏不显示

问题:台式机副屏显示器插拔DVI线后副屏无法检测到,不显示 其他现象:电脑设备管理器“显示适配器”中只有独显,未显示集显。 尝试方法: 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...

Bash脚本常用命令

1.Bash常用快捷键 2.通配符 3.Bash其他特殊符号 4.位置参数 5.预定义变量 6.常用变量比较 7.基础正则表达式 8.文件类型判断 9.文件权限判断 10.整数比较命令 11.字符串判断 其他常用参考: https://zhuanlan.zhihu.com/p/748857250...

《Unity Shader 入门精要》高级纹理

立方体纹理 图形学中,立方体纹理(Cubemap)是环境映射(Environment Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...

vue3实现自定义导航菜单

一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…...

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…...

EDA软件研发的DevOps平台

1&#xff1a;什么是DevOps DevOps是十几年前&#xff0c;在互联网比较火的词&#xff0c;实际上就是ci/cd平台的另外一种说法&#xff0c;核心是说打破研发&#xff0c;测试&#xff0c;运维的边界&#xff0c;能够将整个产品开发的流程快速循环起来&#xff0c;随时可发版&a…...

从单机缓存到分布式缓存那些事

作者&#xff1a;秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义&#xff0c;用于电脑工程领域。当时没有 Cache&#xff0c;CPU 和内存都很慢&#xff0c;CPU 直接访…...

[Ubuntu20] Gym入门,Mujoco

OpenAI Gym是 OpenAI 出的研究强化学习算法的 toolkit&#xff0c;对于强化学习算法来说&#xff0c;大部分的论文环境都已经被 OpenAI 的 gym 环境集成&#xff0c;我们可以很便利的使用该工程来测试自己的强化学习算法&#xff0c;与他人的算法做一个对比。 Gym 官网 Github…...

Linux(ubuntu)系统的一些基本操作和命令(持续更新)

操作&#xff1a; Ctrl Alt T&#xff08;打开命令终端&#xff09; Ctrl Shift &#xff08;放大命令终端窗口&#xff09; Ctrl c&#xff08;退出当前在终端运行的程序&#xff09; 在命令终端窗口按Tab键可以补全要写的命令 命令&#xff1a; pwd&#xff08;查…...

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…...

android 安全sdk相关

前述 在网上有看到许多android安全sdk相关的内容&#xff0c;有重复的也有比较新鲜的内容&#xff0c;这里做一个整体的合集&#xff0c;以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分&#xff08;有一些部分可能会存在一些重合&#…...

NVR监测软件EasyNVR多个NVR同时管理:录播主机的5条常见问题与解决办法

视频监控广泛应用于城市治安、交通管理、商业安保及家庭监控等领域。在使用EasyNVR平台管理多个NVR设备时&#xff0c;尤其是涉及到海康录播主机的场景中&#xff0c;使用者可能会遇到一些常见问题。本文将探讨海康录播主机的五个常见问题及其解决办法。 1、海康录播主机的5条常…...

Z2400027基于Java+SpringBoot+Mysql+thymeleaf引擎的图书馆管理系统的设计与实现 代码 论文

图书馆管理系统的设计与实现 一、项目背景与简介二、系统总体功能三、运行环境与技术选型四、系统架构与模块划分五、系统界面截图六、源码获取 一、项目背景与简介 项目背景&#xff1a; 随着信息技术的不断发展和图书资源的日益丰富&#xff0c;图书馆作为知识传播和学习的重…...

完美解决Docker pull时报错:https://registry-1.docker.io/v2/

1、错误描述 rootubuntu-database:/opt/dify/docker# docker compose up -d [] Running 9/9✘ api Error context canceled …...

A051-基于Spring Boot的网络海鲜市场系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…...

【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 封装为组件使用

【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 【组件】前端ElementUi 下拉Tree树形组件 带模糊 https://live.csdn.net/v/436057 单独使用 <template><div><el-popoverstyle"overflow-y: auto; "placement"bottom…...

Blender 运行python脚本

Blender 运行python脚本 步骤 1&#xff1a;打开 Blender 首先&#xff0c;打开 Blender 软件。你可以从官方网站 [blender.org]( 下载最新的 Blender 版本&#xff0c;并按照安装向导进行安装。 步骤 2&#xff1a;打开“文本编辑器”面板 在 Blender 的默认布局中&#xff…...

递归:求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 求fib数列的第n项&#xff0c;前几项是1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5,每一项都等于前面两项的和 输入描述: 输入一个整数n&#xff0c;n<46 输出描述: 输出一个…...

生成式AI欺诈来袭,什么样的IP数据接口才能筑起防线?

某电商平台的风控系统发出预警&#xff1a;一个“新用户”正在批量下单高价商品&#xff0c;收货地址遍布全国&#xff0c;支付方式各不相同。但奇怪的是&#xff0c;这些订单的浏览行为、停留时间、点击轨迹几乎完全一致——这不是真人&#xff0c;而是生成式AI模拟的虚假用户…...

神经网络实战之dsp实现神经网络vad-1

vad神经网络有很多不同的实现&#xff0c;这里的神经网络是基于pytorch实现的&#xff0c;网络结构如下&#xff1a; class MiniVAD(nn.Module):def __init__(self, n_fft512):super().__init__()self.input48 #输入B T 48# 融合层self.fusion nn.Sequential(nn.Linear(self.i…...

基于.NET 11 与C# 14的高性能安全客户端应用开发

基于.NET 11 与C# 14的高性能安全客户端应用开发 前言 在客户端应用开发领域&#xff0c;性能与安全始终是关键指标。随着.NET 11 和 C# 14 的推出&#xff0c;开发者拥有了更强大的工具来构建高性能且安全可靠的客户端应用。这些新技术不仅提升了应用的运行效率&#xff0c;还…...

探索Java字节码的秘密:专业级反编译工具实战指南

探索Java字节码的秘密&#xff1a;专业级反编译工具实战指南 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui Java反编译工具是中级开发者提升代码分析效率的关键利器&#xff0c;它能够将编译后的字节码…...

MATLAB App Designer实战:如何用按钮优雅终止死循环(附完整代码)

MATLAB App Designer实战&#xff1a;用按钮优雅控制循环的5个关键技巧 在MATLAB App Designer开发中&#xff0c;循环控制是每个开发者都会遇到的经典问题。想象一下这样的场景&#xff1a;你精心设计的界面正在运行一个数据处理循环&#xff0c;突然发现参数设置有误&#xf…...

w3x2lni:魔兽地图跨版本转换的技术突破与实践指南

w3x2lni&#xff1a;魔兽地图跨版本转换的技术突破与实践指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 问题引入&#xff1a;版本壁垒下的魔兽地图开发困境 在魔兽争霸III的地图开发领域&#xff0c;版本迭…...

c++ 短信验证码 API 示例代码(接口开发专用)

在C服务端、嵌入式设备、桌面应用的开发场景中&#xff0c;短信验证码是用户注册、登录、身份校验的必备安全功能。C开发者常面临网络请求封装繁琐、接口参数不规范、调试无标准方案等痛点。本文提供c短信验证码API示例代码&#xff0c;基于原生C实现标准化接口对接&#xff0c…...

打造 TC397 AUTOSAR OS 多核工程最小系统:点亮多核的明灯之旅

tc397autosar os多核工程最小系统 tc397 autosar os 多核最小系统、配置工程、tasking工程 实现功能&#xff1a;六核跑起来、亮灯。在汽车电子领域&#xff0c;多核处理器的应用愈发广泛&#xff0c;TC397 凭借其强大的性能成为众多开发者的心头好。今天咱们就来聊聊如何搭建 …...

如何为你的单片机项目选择最佳通信协议?I²C、SPI、UART全解析

单片机通信协议深度指南&#xff1a;从理论到实战的精准选择策略 当你的单片机需要与外部世界对话时&#xff0c;选择正确的通信协议就像为不同场合挑选合适的语言——商务会议需要正式严谨&#xff0c;朋友聊天则讲究轻松随意。在嵌入式系统设计中&#xff0c;UART、IC和SPI这…...

国光黑苹果安装完整指南:OpenCore配置终极教程

国光黑苹果安装完整指南&#xff1a;OpenCore配置终极教程 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 你是否渴望在普通PC上体验macOS的流畅与优雅&#xff0c;但…...