- 博客(303)
- 资源 (2)
- 收藏
- 关注
原创 FLUKE 8808A数字万用表串口编程
Fluke 8808A是一款5½位高精度台式数字万用表,适用于实验室、校准和研发等场合。主要特性包括199,999字显示、最高±0.015%直流电压精度、200读数/秒采样速率,支持电压/电流/电阻/频率等多种测量功能。该设备提供USB/RS-232接口,支持SCPI命令远程控制,具有CAT I 1000V/CAT II 600V安全等级。文章还提供了Python封装代码示例,包含串口通信、参数设置和数据读取等功能,便于自动化测试集成。
2025-12-15 16:36:08
256
原创 RIGOL DP800系列数字电源控制
本文介绍了使用Python控制RIGOL DP800系列数字电源的方法。通过pyvisa库实现与电源的通信,封装了RIGOL_DP800类来管理电源操作,包括设置电压/电流、开启/关闭输出通道、测量参数等功能。代码针对DP811A和DP832A型号做了通道参数限制检查,确保操作安全。示例演示了如何连接电源、设置2通道5V/1A参数并测量输出值。该方案适用于自动化测试场景中的设备电源控制需求。
2025-12-11 18:55:30
191
原创 OpenCV_C++基础
卷积是图像处理和深度学习中的核心操作,其本质是通过滑动窗口(卷积核)对输入数据进行局部加权求和,实现特征提取或滤波卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作.kernel本质上是一个固定大小的矩阵数组,其中心点称为锚点.把kernel放在像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理.void filter2D( InputArray src, //输入图像OutputArray dst, //模糊图像。
2025-12-02 17:43:22
1002
原创 LwRB轻量级环形缓冲区
LwRB(Lightweight Ring Buffer,轻量级环形缓冲区)是一种在嵌入式系统和实时应用中广泛使用的高效数据管理工具。它由MaJerle开发,GitHub开源项目地址是,目前已有数千个星标。
2025-12-02 16:57:33
283
原创 libzmq使用
本文介绍了ZMQ(ZeroMQ)的基本安装方法和两种主要通信模式。在安装部分,详细说明了Windows平台编译libzmq库、Ubuntu系统安装以及交叉编译的方法。ZMQ是一个高性能异步消息库,支持多种协议和通信模式,具有自动重连、消息队列和多种路由策略等特点。文章重点演示了请求-应答(REQ-REP)和发布-订阅(PUB-SUB)两种通信模式的代码实现,包括客户端和服务端的完整示例,展示了ZMQ在网络编程中的实际应用。通过简单的API调用,开发者可以快速构建高效的分布式系统。
2025-11-24 14:34:03
585
原创 MQTT_TLS单项和双向认证
本文介绍了MQTT TLS认证的配置方法,包括单项和双向认证。首先需要准备MQTTX客户端、OpenSSL和Mosquitto Broker环境。通过OpenSSL生成CA根证书、服务端证书和客户端证书。Mosquitto配置文件中,单项认证设置require_certificate为false,双向认证设置为true。最后启动Broker服务并使用MQTTX测试,注意连接地址必须与证书中CN字段一致,如localhost而非127.0.0.1。
2025-11-17 18:40:32
498
原创 AES-GCM数据加密算法
本文介绍了AES-GCM加密算法在数据传输安全中的应用。AES-GCM结合了加密和认证功能,通过计数器模式和伽罗瓦运算实现高效安全的数据保护。文章详细说明了在Windows环境下使用OpenSSL实现AES-GCM的配置方法,包括VS2022工程设置和动态库引用。同时提供了完整的代码示例,展示了AES-GCM的加密解密实现过程,包括随机IV生成、数据加密/解密以及完整性验证等关键功能。该方案适用于需要防止数据篡改的网络传输场景。
2025-11-13 15:20:02
598
原创 CRC8算法通用版本
本文介绍了CRC8数据校验算法的实现方法,适用于芯片开发中的数据校验。主要内容包括: 提供了CRC8参考网站和计算工具 给出了完整的C语言实现代码,包含多项式值(0x39)、初始值(0x00)等参数配置 实现了输入/输出字节反转功能 提供了测试函数验证算法正确性,使用测试数据{0xB4,0x3C,0xB5,0x03,0x56}进行验证 建议结合网站计算结果进行算法验证
2025-11-06 18:50:00
177
原创 lighttpd编译部署和简单应用
Lighttpd是一款高性能开源Web服务器,以低内存消耗和模块化设计著称。本文详细介绍了在Ubuntu系统上安装和配置Lighttpd的两种方式:通过apt命令直接安装或从源码编译安装。配置部分包括创建专用用户组、修改服务文件、设置监听端口和文档根目录等关键步骤。特别针对CGI应用场景,提供了完整的配置示例和Python CGI脚本编写指南,包含权限设置、脚本测试和访问验证流程。最后通过systemd管理服务启停,并给出浏览器访问测试方法,完整呈现了Lighttpd从安装部署到功能实现的全部流程。
2025-09-16 15:35:10
353
原创 数据分析三剑客
本文介绍了数据分析的核心工具链和基础操作,主要包括: 数据分析流程与工具链 分析流程:数据收集、清洗、分析、可视化 核心工具:NumPy(数值计算)、Pandas(数据处理)、Matplotlib(数据可视化) 开发环境搭建 推荐使用Anaconda集成环境 介绍Jupyter Notebook的安装与基本快捷键操作 NumPy基础 ndarray数组的特性和创建方法 多维数组的维度概念(标量、向量、矩阵、张量) 数组属性(shape、ndim、dtype等)和特殊矩阵类型 数组创建方式 基础构造、预定义形
2025-08-21 11:07:52
457
原创 pytest测试框架
pytest测试框架摘要 pytest是Python的轻量级测试框架,具有简洁的断言语法和丰富的功能。安装方式为pip install pytest,支持命令行、代码和图形界面三种启动方式。框架会自动识别以test_开头的文件/函数和Test开头的类作为测试用例,并提供详细的测试报告。 配置方面支持命令行参数(如-vv详细模式、-s显示输出、-x遇错即停)和pytest.ini文件配置。通过@pytest.mark装饰器可以实现用例标记,结合配置文件注册标记后可按标记筛选测试用例。 主要特点包括:精确的错误
2025-07-24 17:42:39
630
原创 Selenium基础教程
本文介绍了Selenium环境安装与基本操作指南。首先详细说明了Chrome浏览器和ChromeDriver的安装方法,强调版本匹配的重要性,并提供了禁用自动更新的方法。接着介绍了selenium库的安装。 文章重点讲解了Selenium的基本操作: 浏览器设置与启动:包括禁用沙盒模式、保持浏览器打开等配置 网页操作:打开指定网址、关闭标签页和浏览器 窗口控制:最大化/最小化、设置窗口位置和尺寸 实用功能:浏览器截图和刷新网页 元素定位:通过ID、NAME、CLASS_NAME等多种方式定位元素 元素交互:
2025-07-24 17:35:07
393
原创 python单元测试之UnitTest
本文介绍了Python测试框架基础知识,重点对比了unittest和pytest两大主流框架。主要内容包括: 常用测试框架列举(pytest、unittest等)及其优势 unittest框架特点:官方维护、xUnit家族、简单易学但扩展性不足 基本测试用例编写方法(继承TestCase、test_*方法、断言) 高级功能:数据驱动测试(DDT)和HTML报告生成 unittest与pytest的核心差异(用例规则、夹具、断言等) unittest的五大核心组件和多种运行方式(命令行、main函数等) 文章
2025-07-18 12:03:58
624
原创 python开发usbhid通信
本文介绍了使用Python开发USB HID通信的方法,通过hidapi库实现同一台电脑连接多个相同HID设备的通信。主要内容包括:1)安装pywin32、hidapi等依赖包;2)提供完整代码示例,包含设备枚举、数据收发、CRC校验等核心功能;3)说明如何通过注册表查询USB设备位置信息;4)详细解释设备路径格式规范;5)提供打包配置和注意事项,建议根据Windows版本选择对应Python版本(Win7 32位用Python 3.6,Win10可用3.8+)。该方案适用于需要控制多个相同HID设备的应用
2025-06-25 09:51:59
362
原创 python开发Jlink烧录
摘要:本文介绍了一种基于Python和Pylink的MCU烧录方案,解决了传统J-Flash工具版本兼容性和烧录效率问题。通过安装pylink-square和pyinstaller开发包,实现了快速烧录功能。代码示例展示了Jlink连接、目标芯片识别、固件下载等核心功能,支持命令行参数输入。最后通过pyinstaller打包为独立可执行文件,并配置了版本信息文件(version.txt)来定义软件属性。该方案相比官方工具具有更好的兼容性和更快的烧录速度。
2025-06-25 09:35:03
227
原创 PyInstaller 打包成单个EXE与多文件的执行效率比较
PyInstaller打包Python程序时,单文件EXE和多文件形式存在性能差异:单文件启动较慢(需解压到临时目录,内存占用高),适合分发但不利于频繁重启;多文件启动更快(按需加载模块),适合开发和测试场景。单文件加载需解压所有内容,而多文件直接加载所需模块。建议根据需求选择:分发简单性选单文件,启动速度和多文件优先选多文件。大型程序或防病毒扫描会加剧单文件的启动延迟。
2025-06-25 09:20:00
516
原创 ini配置文件解析之iniparser
iniparser是一个C语言库,是针对ini配置文件的开源解析器。ini文件则是一些系统或者软件的配置文件。iniparser可以对配置文件进行解析、添加、修改、删除等操作。
2025-04-25 15:10:26
221
原创 inih轻量级的ini文件解析库
在C语言开发中,经常需要处理INI配置文件。而inih,这个仅用几页代码写成的轻量级INI文件解析器,凭借其简洁高效的设计,成为了嵌入式系统和资源受限环境下的首选方案。接下来介绍inih的特点,并提供一个简单示例。inih (INI Not Invented Here) 是一个用C语言编写的INI文件解析器,它秉承“简单就是美”的设计理念,代码精简,易于理解和维护。
2025-04-25 11:22:26
1010
原创 nanopb编程示例
编译生成.c 和 .h 文件;添加生成文件到工程中。编译生成.c 和 .h 文件;添加生成文件到工程中。编译生成.c 和 .h 文件;添加生成文件到工程中。生成的头文件中结构体的定义如下。生成的头文件中结构体的定义如下。simple.proto文件。simple.proto文件。simple.proto文件。序列化和反序列化编程。序列化和反序列化编程。序列化和反序列化编程。
2025-04-25 09:14:53
450
原创 Nanopb 使用
nanopb 是一个非常轻量级的 C 库,用于 Protocol Buffers 的序列化和反序列化。它专为嵌入式系统设计,可以运行在内存和存储空间有限的环境中。nanopb 支持 Protocol Buffers 2.3 和 3.0 版本的标准,因此可以用于大多数现有的 Protocol Buffers 定义文件。
2025-04-23 17:34:30
528
原创 Protobuf 使用
enum Week// 第一个枚举项的值必须为 0,在 proto2 中没有此限制,这是因为对于枚举类型默认值是 0// 后续的枚举项值可以是任意的、不重复的Sun = 0;Tue = 1;Wed = 2;Thu = 3;Fri = 4;Sat = 5;Mon = 6;使用如下命令生成demo.pb.cc 和 demo.pb.h。
2025-04-23 14:23:09
388
原创 Protobuf 语言
Protocol Buffers 使用了一种中立、平台无关的语言来定义数据结构,使得不同编程语言、不同平台之间能够进行数据交互。Protocol Buffers 目前主要有 Proto2 和 Proto3 两个版本,Proto3 保持了与 Proto2 的一定程度的兼容性。但是,某些 Proto2 特性在 Proto3 中不再支持。在 Protobuf 中,标量类型(Scalar Types)是指一些基本的数据类型,可以直接在 文件中定义并用于数据字段。这些类型对应于原生的简单数据类型,类似于编程语言中的
2025-04-23 10:58:36
773
原创 Protobuf 安装
Google Protocol Buffers(简称 Protobuf)是一种由 Google 开发的,用于定义结构化数据并在不同的系统或编程语言之间高效地传输和存储数据。它可以看作是一种更轻量且更高效的替代方案,类似于 XML 或 JSON,但在性能和数据大小上表现更优。
2025-04-23 09:49:42
521
原创 Ubuntu18.04 升级最新版本Cmake
ubuntu18.04默认安装的cmake版本为 3.10.2;在编译一些软件的时候,版本太低导致无法编译。
2025-04-23 09:34:53
1178
原创 内核高精度定时器
标准的定时器不够精确,不适合对时间要求比较高的场景,比如说实时应用。要使用高精度定时器,需要开器配置选项CONFIG_HIGH_RES_TIMES,定时的精度为微秒,与标准定时器的区别是标准定时器取决于HZ(依赖jiffies),而HRT实现是基于ktime。
2024-10-12 11:37:20
476
原创 内核中延迟的工作delayed_work
对于周期性的任务,除了定时器以外,在Linux内核中还可以利用一套封装得很好的快捷机制,其本质是利用工作队列和定时器实现,这套快捷机制就是delayed_work。
2024-10-10 15:30:48
453
原创 Linux 内核定时器
在Linux设备驱动编程中,可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或者完成某周期性的事务。这组函数和数据结构使得驱动工程师在多数情况下不用关心具体的软件定时器究竟对应着怎样的内核和硬件行为。
2024-10-10 14:50:28
388
原创 linux udev详解
Linux 2.6以后的内核引入了sysfs文件系统,sysfs被看成是与proc、devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性。
2024-10-09 11:57:12
1970
原创 使用vs编译paho.mqqt.c
6.点击generate,然后点击open project。8.进入你选择的生成目录,在src下就可找到你的库。5.点击configure,选择VS版本。3.运行cmake-gui.exe。下载对应系统的msi文件安装即可。可以去我之前的文章中找到下载地址。2.下载paho.mqqt.c。在界面中选择配置选项勾选即可,4.在如图1处选择你的源码。1.首先下载cmake。在如图2处选择输出路径。
2024-01-26 09:41:44
471
原创 开源libmodbus编译为32位和64位动态库
libmodbus 是支持Linux,Mac OS X,window 的一个开源库,支持modbus TCP和RTU 两种模式。
2023-12-15 09:56:18
1807
原创 ubuntu离线安装包下载和安装
找到ubuntu20.04 对应的deb包,点击进去,找到 Download --> BinaryPackage。比如需要下载 lm-sensors, 在 search栏中添加搜索。复制粘贴 对应的url到浏览器即可完成下载。
2023-12-01 14:26:02
3784
2
原创 Linux操作系统不同大小硬盘之间的系统拷贝
修改 /mnt/boot/efi/EFI/ubuntu/grub.cfg /mnt/boot/grub/x86_64-efi/load.cfg /mnt/boot/grub/grub.cfg 三个文件中的UUID。拷贝数据到/mnt 目录:就是把/dev/sda2 对应的目录的内容拷贝到 /mnt/拷贝数据到/mnt 目录:就是把/dev/sda1 对应的目录的内容拷贝到 /mnt/修改 /mnt/EFI/ubuntu/grub.cfg 文件中的UUID。加载 /dev/sdb1。
2023-07-10 11:47:15
1877
1
原创 Linux磁盘分区UUID查看和修改
不要轻易修改磁盘的UUID,尤其是系统盘的UUID,修改后需要修改对应的grub和fstab,否则系统无法加载起来。
2023-07-07 10:27:37
4944
原创 Linux 系统守护进程管理 --(start-stop-daemon)
目录一、功能二、格式2.1 搜索匹配的过程2.2选项2.2.1匹配选项2.2.2只对–start有效的选项2.2.3只对–停止有效的选项2.2.4其他选项三、应用3.1 启动进程3.1.1 强制启动3.1.2 默认启动3.1.3 启动进程,并生成进程的PID文件3.2停止进程3.2.1 使用进程名称停止进程3.2.2 使用PID文件停止进程一、功能启动或停止系统守护进程。二、格式start-stop-daemon [–
2022-05-10 16:17:45
4237
原创 Linux proc目录详解
目录1. 什么是proc2.proc目录介绍2.1/proc/cpuinifo CPU的信息(型号、家族、缓存大小等)2.2/proc/meminfo物理内存、交换空间2.3/proc/mounts 已加载的文件系统的列表2.4/proc/devices 可用设备的列表2.5/proc/filesystems 被支持的文件系统2.6/proc/modules 已加载的模块2.7/proc/virsion 内核版本2.8/proc/cmdl...
2022-05-10 15:23:41
7339
转载 ubuntu里设置从串口登录
1) Create a file called /etc/init/ttyS0.conf containing the following:# ttyS0 - getty## This service maintains a getty on ttyS0 from the point the system is# started until it is shut down again.start on stopped rc or RUNLEVEL=[2345]stop on runl.
2021-06-10 16:04:59
1888
转载 Linux模块加载流程及如何让系统开机自动加载模块
Linux模块加载Linux系统加载哪些内核模块,和配置文件有关系。模块保存在/lib/modules/下。使用/etc/modules-load.d/来配置系统启动时加载哪些模块。使用/etc/modprobe.d/下配置模块加载时的一些参数,也可以利用blacklist来屏蔽模块的自动加载。例如,在安装NVIDIA显卡驱动时,需要屏蔽开源的nouveau驱动,就可以将其加入blacklist。如何添加一个自己编译的模块将编译好的.ko模块放到目录/lib/modules/`uname
2021-06-10 15:41:42
2660
【电子测量仪器】基于5½位双显示技术的数字万用表操作与维护:Fluke 8808A多功能电参数测试系统应用指南
2025-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅