- 博客(44)
- 收藏
- 关注
原创 LabVIEW创建扁平化UI标题栏
在许多现代应用程序(尤其是支持触控操作的应用程序)中,窗口标题栏通常不再采用Windows操作系统的标准样式。例如,我们可能希望创建这样一款应用程序:它拥有一个尺寸更大的标题栏。
2025-08-30 14:29:00
48
原创 Python判断路径的后缀
在Python中,判断文件路径的后缀可以使用os.path模块或path.lib模块,这两个模块都提供了方便的方法来处理路径。
2025-08-29 22:14:45
96
原创 Python控制态输入字符串
在Python中,从控制台获取用户输入的字符串主要依赖内置函数input(),根据需求不同,还可搭配类型转换,循环输入等方式实现更灵活的功能。以下时详细用法及示例。
2025-08-29 21:05:38
120
原创 电路和电力系统地线
【摘要】地线是电气系统中的重要安全防线,其核心功能体现在:1.安全防护——通过漏电保护器联动或直接分流漏电电流,防止触电事故;2.稳定电路——作为电压基准和电磁干扰过滤器,确保设备正常运行。常见类型包括保护地线、信号地线和防雷地线。需警惕地线失效的三大主因:虚假接地、电阻过大、零地混接,这些情况可能导致严重安全隐患。正确安装且电阻≤4Ω的地线才能有效发挥双重保护作用。
2025-08-29 19:52:14
582
原创 C#为什么继承form就有用户界面了
Form类本身就是一个'预制好的串口模板",封装了所有底层窗口逻辑和UI能力。继承Form本质上是复用了这套成熟的窗口框架,因此子了无需从0实现界面功能,就能直接拥有一个可现实,可交互的窗口。这就是面向对象"继承"特性的典型应用,通过继承复用父类的功能,专注于业务逻辑而非底层实现。
2025-08-29 19:09:05
356
原创 计算机内存的地址是怎么排序的
1.物理地址;按'硬件布局"线性排序,从0开始连续递增,地址范围由地址线位数决定,多内存条无缝合为连续地址;2.虚拟地址:按"进程隔离"分段排序,每个进程有独立空间,划分为用户态(低地址,进程可访问)和内核态(高地址,仅内核可访问),用户态内堆/栈地址增长方向相反;3.底层本质:所有地址地排序都是"二进制地递增",十六进制是人类可读地简化表示,最终通过地址线地二进制信号映射到存储单元。
2025-08-29 17:03:36
530
原创 信号处理能量信号
1时间/空间范围有限 信号仅在有限的时间(或空间)内有非零值,其他区域为0;2总能量有限 非零区域内的 幅度平方积分(或求和)是有限制,平均功率为0这也是它与"功率信号"(如交流电,持续的正弦波,总能量无线,平均功率有限)最本质的区别。
2025-08-29 11:37:50
476
原创 DSP应用领域及影响
数字信号处理是能够改变21实际科学和工程面貌的最强大的技术之一。它再诸多领域内已经引发了革命性的变化:通信,医学成像,雷达和声纳,高保真音乐复制以及油田勘探等,这里只列出了一部分领域。每个领域都结合自己的算法,数学知识和专业技术对DSP技术展开深入的研究。这种广度和深度的结合使得任何一个人都不可能精通索引的以及成形的DSP技术。DSP的教学有两个主要任务:学习适用于整个领域的通用概念,学习用户所感兴趣领域的专门技术。
2025-08-29 08:31:17
269
原创 自相关函数ACF
要理解自相关函数(Auto-Correlation Function,ACF),需要先掌握几个核心基础概念--这些概率不仅是理解ACF定义和用途的前提,也能帮助你将ACF与实际信号分析场景结合。以下从"数学基础""信号与序列基础""统计与概率基础"三个维度,梳理最关键的前置知识,并解释他们与ACF的关联。
2025-08-28 14:36:20
377
原创 自功率谱概念
自功率谱是信号分析中连接时域与频域的关键工具,通过傅里叶变换将信号的自相关函数转换为频域表达,揭示不同频率成分的功率分布。其核心特性包括非负性、实值对称性,且不包含相位信息。自功率谱在工程中广泛应用,如机械故障诊断、噪声振动分析等,通过定位特征频率来识别问题。与功率谱密度(PSD)本质相同,但更强调信号自身的功率特性。简言之,自功率谱是实现信号频率-功率关系可视化的核心工具,适用于机械、电子、生物等多个领域。
2025-08-28 14:01:11
491
原创 LabVIEW TDMS文件
TDMS文件是NI公司新推出的数据管理系统,TDMS文件以二进制的方式存储数据,所以文件的尺寸更小,存取速度更快。因此具备二进制文件的优点的同时,又具备关系型数据库的一些优点。据NI公式测试,TDMS文件的存取速度能达到600MB/S,这样的存取速度能满足绝大多数数据采集系统存取的需求。
2025-08-27 23:35:59
479
原创 C语言void*(空类型指针)
在C语言中,void*(空类型指针)是一种特殊的指针类型,它可以指向任何数据类型的内存地址,但不包含数据的类型信息。这种灵活性使它成为C语言中实现通用操作的重要工具。
2025-08-27 01:41:04
410
原创 C语言空指针
C语言中空指针(NULL)是一个特殊指针值,表示指针不指向任何有效内存地址,其本质是(void*)0。主要作用包括:初始化指针避免野指针、作为函数错误返回值、用于指针有效性检测。使用规范要求:定义时立即初始化、使用前检查有效性、释放内存后置为NULL。常见误区有:解引用空指针会导致崩溃、混淆空指针和未初始化指针。正确使用空指针能有效减少内存错误,是编写健壮C程序的基础。
2025-08-27 01:08:41
311
原创 C语言的变量存储方式和参数传递方式
本文主要探讨了C语言中变量存储方式与指针使用的核心概念。文章首先区分了"值类型"和"引用类型":基本数据类型和结构体直接存储数据,而指针变量存储内存地址。在函数参数传递中,值传递创建副本,指针传递则通过地址修改原数据。随后详细分析了变量在栈和堆中的存储机制:局部变量自动分配在栈上,全局变量存储在数据区,动态内存需手动管理。特别强调了指针的灵活性和危险性,指出指针可指向不同存储区域,但需警惕野指针问题。最后总结了不同变量的内存管理特点,强调值类型变量的自动管理特性和指针
2025-08-27 00:14:42
872
原创 C#“has a“和“is a“面向对象编程中描述类与类之间关系的两种重要概念
表示类之间的继承关系,即一个类是另一个类的特殊类型例如:"狗是一种动物",此时Dog类继承自Animal类,Dog是Animal的子类特点:子类拥有父类的所有成员(初私有成员)使用:关键字表示继承体系"特殊与一般"的关系。
2025-08-26 22:58:59
520
原创 C#同步堵塞模型和异步非堵塞模式
同步堵塞模型中,程序会按顺序执行,遇到耗时操作(如文件读写,网络请求)时会堵塞当前线程,直到操作完成才继续执行。特点:整个过程使用同一个线程(线程ID不变)调用ReadFileSync时,线程会被阻塞等待文件读取完成阻塞期间,线程无法执行其他任务,造成资源浪费。
2025-08-26 05:04:43
208
原创 C#Thread和Task
在C#中,推荐使用Task而非直接使用Thread,本质上是因为Task更高级,更高效的抽象,能够更好的适应现代应用的并发性需求。
2025-08-26 04:36:48
349
原创 LabVIEW无用编程例举
LabVIEW编程初学者常犯两类错误:1)数组运算中过度使用循环而非索引功能,忽略函数多态性;2)重复造轮子,如手动实现数组转字符串而忽略内置函数。文章对比了初学者、优化和最佳三种实现方式,强调掌握LabVIEW核心功能(自动索引、多态运算)和熟悉内置函数库的重要性。提醒开发者应先充分了解平台现有功能,避免耗时开发已有解决方案。
2025-08-26 03:57:09
174
原创 LabVIEW模板和用户库
重新启动LabVIEW,就可以使用刚刚创建的模板了,如何自己创建的通用控件或者VI,那么把它们复制到C:\Program Files\National Instruments\LabVEIW 版本号\user.lib文件夹,则在"控件"选版和"函数"选版中就会显示这些控件和VI。此时就可以通过选版直接使用这些通用控件或者VI了。模板文件复制到C:\Program Files\National Instruments\LabVIEW 版本号\templates\Frameworks文件夹中。
2025-08-26 02:45:39
154
原创 LabVIEW变体数据
摘要:LabVIEW中的变体数据类型是一种灵活的数据结构,能够兼容各种数据类型,广泛应用于自动化服务器、ActiveX编程和网络通信。通过转换函数可实现变体数据与原始数据间的相互转换,并支持动态添加属性构建复杂数据结构。新版本提供多种解析函数(如获取数值、数组、簇信息等),可自动判断变体数据中的实际类型,特别适用于处理不固定数据类型的场景,如队列状态机中的动态数据传输。
2025-08-26 01:43:23
278
原创 C语言static变量
在C语言中,static是一个多功能的关键字,用于修饰变量和函数,其核心作用是改变标识符的存储周期和作用域。对于static变量,主要分为以下两种场景。在函数内部声明的static变量,具有持久的存储周期和局部的作用域:存储周期:变量在程序启动时分配内存,直到程序结束才释放(类似全局变量),但只会初始化一次。作用域:仅在声明它的函数内部可见,外部无法访问特定:适合记录函数被调用的次数,保存中间状态等场景,变量状态在多次函数调用间保持在函数外部声明的static变量,具有持久的存储周期和文件级的作用域存
2025-08-26 01:01:20
135
原创 C语言可复用计数器
要创建一个可复用的C语言计数器,我们可以采用模块化设计,将计数器的实现与使用分离,方便再多个项目中复用。通过结构体指针和使用结构体指针的方法来模拟类的实现 实现可重复用。
2025-08-26 00:42:30
120
原创 C语言Static计数器
注意:使用static计数器时,其状态会在整个程序生命周期中保持,并且只在定义它的文件内可见(如果定义在函数外)或只在函数内可见,这为计数器提供了一定的封装性。在C语言中,使用static关键字可以创建具有持久状态的计数器,这种计数器的状态会在函数调用之间保持,非常适合需要在多次调用中追踪累计值的场景。适合需要同时跟踪多种计数的场景(如不同类型的事件统计)通过参数控制计数器行为(增加,减少,重制)简单的状态跟踪(无需复杂的面向对象功能)最简单的实现,合适简单的调用次数统计。static计数器的适用场景。
2025-08-26 00:06:37
194
原创 C#计数器类
使用时,只需创建Counter类的实例,设置必要的属性(如最大值最小值),然后调用相应的方法即可。程序入口文件Program.cs演示了如何使用这个计数器类的各种共功能。创建一个简单的C#计数器类,包含基本的计数功能(增加,减少,重制和显示当前值)。
2025-08-25 23:10:12
179
原创 LabVIEW重入
通常情况下,VI是不可重入的,即VI是互斥的。当两个线程同时调用同一个VI,而其中一个线程正在运行该VI时,必须等待这个线程运行完毕后,另外一个线程才能获得控制权,继续运行该VI。我们在调用DLL中的函数时,通常需要将函数封装在一个VI中,就是这个原因。如果DLL函数不是线程安全的,是不允许被同时调用的.封装在VI里,就避免了同时调用的问题。当在多处调用不可重入VI时,可以通过未初始化的移位寄存器共享数据。前面提及的LV2型全局变量,就是基于这个原理。可重入VI是线程安全的,可以同时被多个线程调用。
2025-08-25 22:30:45
218
原创 C#命令模式
命令模式(Command Pattern)是一种行为型设计模式,它请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队执行,记录日志以及撤销操作等功能。1.解耦发送者和接受者:发送者不需要知道接受者的具体事件,只需要知道如何发送命令。具体命令(ConcreteCommand):实现命令接口,绑定接受者和动作。2.支持撤销和重做:通过实现Undo方法可以轻松支持操作的撤销。4.支持日志和事务:可以记录命令执行日志,在需要时重新执行。调用者(Invoker):要求命令执行请求。
2025-08-25 14:47:43
117
原创 java类之间的相互通讯
在Java中类之间的相互通信(交互)是面向对象编程的核心内容,主要通过方法调用,数据传递,继承,接口实现等方式实现。不同的场景需要选择合适的通讯方式,以保证代码的灵活性,低耦合性和可维护性。
2025-08-24 20:06:58
376
原创 C语言结构体之间通讯
在C语言中,结构体之间的"通讯"通常指结构体之间的数据传递,共享或相互引用。这种通讯主要通过指针传递,结构体嵌套和相互引用等方式实现。
2025-08-24 18:49:32
274
原创 LabVIEW子面板
LabVIEW中不支持多窗口(MDI),多个运行的VI各自具有自己的单独窗口(前面板)。子面板的出现在一定程度上解决了多窗口的问题。字面版属于容器型控件,在子面板中,可以插入其他VI的前面板,传入部分不包括菜单栏,标题栏等。首先在前面板中,布置一个子面板控件,调整至合适的位置和大小,此时在程序框图中会自动出翔子面板的“插入VI”方法。子面板本身只有“插入VI”和“删除VI”这两个方法。
2025-08-24 17:45:13
1318
原创 DQMH框架
启动"模块主VI"。调用此VI后,你可以通过将此VI的广播事件输出连接到“注册事件”函数,选择性地注册该模块地广播事件。在选择性地调用"注册事件"函数后,你应始终为该模块调用“同步模块事件VI”,并将此VI地“等待事件同步?”输出连接到"同步模块事件VI"的相应输入。
2025-08-24 14:12:51
234
原创 TestStand
TestStand自动化测试系统采用树状结构组织测试程序,包含序列文件、主序列、子序列、步骤组和步骤等核心组件。系统通过TestStand引擎实现核心功能,序列编辑器提供图形化开发环境,用户界面用于运行调试,模块适配器支持多种编程语言代码模块的调用。测试程序从主序列开始执行,通过设置组、主体组和清理组的结构化组织,确保测试过程的有序性和异常处理的安全性。系统还支持用户界面定制和跨环境调试功能,满足从开发到产线的全流程需求。
2025-08-24 10:59:31
485
原创 LabVIEW事件结构
LabVIEW的事件结构独具特色,它不同于常规语言的事件驱动编程方式,融合了许多LabVIEW自身的特点,因此我们必须了解如何正确地使用事件结构。
2025-08-24 10:07:08
243
原创 c#线程间传递数据
当需要传递多个参数时,可以封装到一个类中set;set;set;//准备要传递的数据//线程执行的方法//转换参数类型= null)
2025-08-24 09:21:33
284
原创 C#开闭原则
摘要:C#中开闭原则(OCP)强调对扩展开放、对修改关闭。通过计算器案例说明:违反OCP时,新增运算需修改原有类;遵循OCP则通过IOperation接口定义运算契约,具体运算实现为独立类(如Addition、Multiplication),Calculator类通过依赖注入使用这些实现。关键点:1)抽象接口保持稳定;2)新增功能只需扩展新类;3)核心类保持封闭不修改。这种方式提高了系统的可扩展性和稳定性。
2025-08-23 17:31:47
131
原创 C#减少类之间的依赖
在C#中,减少类之间的依赖(降低耦合度)是面向对象设计的核心目标之一,这有助于提高代码的可维护性,可扩展性和可测试性。以下是常用的方法和设计模式,结合实例说明。
2025-08-23 17:03:47
264
原创 C++两个类之间的相互通讯
在C++中,两个类之间的相互通信(交互)有多种实现方式,选择哪种取决于类之间的关系(如依赖,关联,聚合)和具体业务逻辑。
2025-08-23 09:10:22
285
原创 python两个类的相互通讯
在Python中,两个类之间的通讯方式有多种,选择那种方式取决于具体的应用场景和类之间的关系。以下是常见的几种实现方式。
2025-08-23 06:56:51
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人