当程序越写越大的时候,我们会发现代码界面会比较乱(线太多),那要怎么做可以让代码更简洁一点,我只管直接调用某个功能函数,而不需要在一个VI上面去实现这个功能函数呢?--子VI.好比C语言里面的Main函数,只管调用实现功能的函数,让主代码整体逻辑清晰明了,而复杂的处理和运算过程就交给里面的函数去实现. 这里拿个简单的例子,一通百通.如之前的加法程序,只有一个VI,然后VI里面的逻辑就是为了实现加法的功能,如果我们要增加减法,乘法和除法等运算,就要把所有这些逻辑全部写一个VI里面(这里是因为程序实…
前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告诉我,移位寄存器是个好东西,用得好,代码量可以更加有效简洁.老曹目前的程序基本就没脱开过移位寄存器的使用.下面就简单的讲解一下移位寄存器的使用,各位不妨试一下用其他方式实现下面累加的功能,和移位寄存器对比一下就知道它好用在哪里了,不过要了解到好用的精髓,还是得在复杂一点的功能上,这个在后面的状态机中…
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样,好的编程思维再加上一个好用的程序框架,那么我们就可以做出很多有趣的功能了.之前看到有人在git上发过一个用labview实现的超级玛丽单机游戏,还是可以跑得了的,你们也可以(手动滑稽),不过还是用在工控和自动化领域会常规(正常)一些. 再好的的教程也需要大家经常动手,何况是这"入门到出家"…
labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上也有很多很好用的状态机,如JKI等.不过几乎都大同小异,看大家习惯用哪种了.下面直接附上状态机概述,大家可以参照着写一个,或者在老曹资源上下载该状态机,上面还有几个我常用的辅助VI,如Excel存储,界面延时显示等,原创不易,请大家多多支持(下载)拉.(https://download.csdn.n…
本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还是全部变量,免不了要考虑到数据先后冲突的问题,但队列可以很好地解决这个问题.其中状态机的生产者消费者模式传递数据的方式大多采用队列,生产者逻辑产生的数据通过队列一一传递到消费者逻辑中,消费者读取队列后,将队列的数据一一处理.在labview中,队列还有一个很方便的地方就是VI之间传递数据,VI之间传…
概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 工程师来说,就是一把通往软件控制的利器,在专攻硬件,嵌入式等领域的同时顺便兼修上位机软件, 对硬件工程师或嵌入式工程师来说如虎添翼.(指单片机开发,linux等大型嵌入式操作系统有更合适的 上位机机开发环境---QT) labview的安装这里不做描述,网上有一堆资源,小伙伴们自己去搜索安装咯,老…
​ Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多.(很多开发者习惯把UART称为232,但很多萌新容易被误导.其实UART≠RS232,UART是TTL电平的,一般和单片机通讯时用的是TTL电平的串口信号.232,485和UART的电平都不同,这里不多说,不清楚的同仁找度娘呗).串口通讯在应用上已经很成熟,无外乎是初始化配置波特率,数据位,停止位等,然…
1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成exe的话我们需要从新建工程文件开始,下面按步骤一步一步生成我们第一个Labview的exe程序.首先点击文件->新建(N)->项目…
使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件.基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的.一个好的状态机可以帮助我们搭建一个好的程序框架,这将非常有利于我们以后写一些大型程序.在此前,我们先用之前的加减乘除运算熟悉一下事件结构. 1.同样的,按上一章节的操作,或者直接拷贝上一章的程序.新建工程->新建calc主VI->新建子VI,这里把主VI打回原型,把之前的条件结构减掉(其实就是用事…
由金山云视频云技术团队提供:FFmpeg从入门到出家第三季: 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下. 4.1 FLV规范扩展 HEVC为视频编码格式,因此对FLV规范的扩展,只集中在Video Tag,其它部分,无任何改动. 4.1.1 支持HEVC的VideoTagHeader 扩展后的VideoTagHeader如下图所示(红色字体为新增内容):图9. 支持HEVC的FLVTa…
labview版本:Labview2015 Labview里面也可以向C语言等变成语言一样调用子程序,本文带你一步一步实现子VI的创建与调用. 第一步 写好程序 首先我们写个简单的加法程序: 我们的目的就是要把这个程序当做子VI来调用. 第二步 自定义子VI图标 右击前面板或者后面板的右上角的这个图标,点击编辑图标我们可以自己定义我们子VI的图标. 右上角的图标 自定义子VI图标的窗口 然后我们就可以自己开始创作了!这里我画了下面这样一个图标: 点击确定就可以了. 第三步 配置节点 对这步的理解…
原文:RabbitMQ入门教程(八):远程过程调用RPC 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/78634188 分享一个朋友的人工智能教程.比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看. 简介 远程过程调用(RPC): 客户端发送一个请求到远程服务器上,远程服务器接收请求并处理结果,将结果响应给客户端,这个过程被称为远程过程…
好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------------------------------------------------------------------- C#互操作系列文章: C#互操作性入门系列(一):C#中互操作性介绍 C#互操作性入门系列(二):使用平台调用调用Win32 函数 C#互操作性入门系列(三):平台调用中的数据封…
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 C# 互操作性入门系列(四):在C#中调用COM组件 本专题概要: 引言 如何使用平台调用Win32 函数--从实例开始 当调用Win32函数出错时怎么办?--获得Win32函数的错误信息 小结 一.引言 上一专题对.NET 互操作性做了一个全面的概括,其中讲到.NET平台下实现互操作性有三种技术-…
​          讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一样的,具体的底层协议不多说,大家自行百度哦(别问,问就是忘记了).主要还是跟大家讲一下在labview应用端如何用代码实现通讯,一般是针对汽车产品,才会用到(做汽车仪表,音响导航类的公司就会经常用到).大厂用的CAN盒,CAN卡大多是NI的,小小的一块东西就要几千上万,小公司一般是买国内的,比如周立…
​ 之前有小伙伴提到需要虚拟示波器的资料,有些库还有文件丢失了,直接给的工程跑不起来,这里我把关键的地方讲解一下,大家可以自行开发.其实开发不难,只是有些点会耗点时间.虚拟示波器,顾名思义就是非实物的示波器,但也还是硬件(便携的采集设备)和软件(在电脑上显示和操作)的结合,和数字示波器相比,本质上区别不大,现在贵一些的数字示波器从功能上看,也很像一台计算机了).今天要讲的只是低配的,简易版的虚拟示波器(在下当年的毕业设计).下位机是基于STM32的ADC采集实现的信号抓取,然后通过串口传到上位机…
前言 本人是服务端程序员,同时需要兼职前端开发.常用的就是原生态的HTML.Javascript,也用过ExtJS.Layui.可是ExtJS变公司后非常难用.Layui上手还行,用过一段时间,会觉得html+css+js的混杂编程感觉很乱.所以想寻找纯Javascript UI框架.搜了半天,终于发现Webix这款成熟度比较高的框架,所以就这么开始了踩坑. Webix 入门 Webix是个Javascript UI框架,官方网站在:https://webix.com/. 官方的入门demo是:…
重做系统,并且VS2017也发布有一段时间了,可以试试了. 于是网上搜了下,离线安装要下载他的安装工具. https://www.visualstudio.com/zh-hans/downloads/ 然后管理员权限运行命令行 vs_enterprise__238667983.1517814436.exe --layout E:\vs2017offline --lang en-US 类似这种东西,最后面的参数是语言,因为我只用英文版,所以语言是en-US. 比较要命的是2010安装包大概是3G不…
Swift中的面向对象5个要素:枚举.结构体.类.协议.扩展 面向对象研究的是对象,完成一件事情需要多个对象参与,是生活的映射 Swift中结构体和类非常相似,也就是结构体能完成类的所有功能.结构体是值类型,类是引用类型 结构体定义格式: struct  结构体名称{ 成员变量(数据类型定义的变量)—属性 成员方法(函数)     —行为 } 结构体的成员变量不要求初始化 如果结构体的成员变量赋初值,编译器会自动生成一个不带参数的构造器,原有的之一构造器还可以继续使用 结构体自动提供了逐一构造器…
8  闭包 Swift语言中可以使用一块独立代码块替代函数的定义,称独立的代码块为闭包 闭包格式为: {(参数列表)->返回值类型    in 执行语句 } 例子: <1>使用闭包实现两个数的和 var sum:(Int,Int) ->Int = {(a:Int, b:Int)->Int in return a + b} <2>使用闭包实现一个整数和一个字符串的拼接,将拼接的结果返回 var append  = {(num:Int,str:String) ->…
Swift语言中每一个函数都有它特定的数据类型,称其为函数类型 函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型 函数类型的格式为:参数列表的数据类型—>返回值类型 <1>func test1(name: String,age: Int)->String{} 函数类型:(String,Int)->String <2>func test2(a: Int){} 函数类型:(Int)->() 或者 (Int)->…
6 函数 函数就是对某个功能的封装,一个swift程序可能由多个函数组成 swift中定义函数的格式: func 函数名称(参数列表) —>函数返回值类型{ 函数体 return } 函数定义要素: func 是定义函数的关键字 函数名名字:为了增强可读性,函数的名称只能用字母字符来命名,函数名称以驼峰式命名法来命名 参数列表:可以带多个参数,也可以没有参数 如果带有多个参数,格式为:参数名称:类型标注,参数名称:类型标注… 如果函数带有多个参数,调用函数的时候,向函数传递的数据,类型必须要和定…
字典和集合 字典 字典是集合类型存放多个键值对,其中键是唯一的,不能重复 字典中存放的键值对是无序的,写入的顺序和读取的顺序可能不同 字典中存放的数据是任意类型 字典可以分为可变字典和不可变字典 创建空字典 var dic: Dictionary<String,String> = Dictionary<String,String>() var dic: [String:String] = [:] var dic: [String:String] = Dictionary() var…
Swift中数组是一种数据结构,用来存放多个形同类型的数据结构,数据在数组内的存放是有序的,存进来的数据个读出来的顺序相同 Object-C 中数组能够存放任意类型的数据类型为[AnyObject] Swift中数组有两种形式: 可变数组:用var修饰,数组的内容及长度可以任意修改 不可变数组:用let修饰,数组的内容及长度都不能修改 Object-C 数组中也有两种形式 不可变数组:let arr: NSArray = NSArray.init(objects: 10,”hello”,1.23…
4 字符串   Swift and Object-C 字符串由多个字符组成,使用 “” 引起的内容 swift语言中提供了两种字符串:可变字符串和不可变字符串 可变字符串:字符串的内容可以修改,字符串的长度可以修改,用var修饰 不可变字符串: 字符串的内容和长度都不能修改,用let修饰 Swift 和 Obiect-C之间的转换 用as 转换    [当前类型  as  想转换的类型] var str: NSString = “I Love Object - C” let str0 = str…
3 循环语句 当一段代码被多次重复利用的使用我们就使用循环 swift提供了三种形式的循环语句 1.while 循环 2.repeat — while 循环 3.for — in 循环 while 循环 格式: 循环变量初始值(循环开始的条件) while  循环条件{ 循环体 循环变量自加自检(使循环趋于终止) } 循环条件: 一般的情况都是关系表达式,偶尔也会出现关系表达式和逻辑表达式并用 while循环的执行过程:先判断循环条件是否为真,如果为真执行循环体,然后循环变量自加自检,接着继续判…
2 分支语句 当程序面临多个选择,每一个选择都会执行不同的代码块,这个时候就要使用分支语句.常见的分支语句有: if 选择语句:if... if…else if…elseif…else if是现实生活中:“如果…那么”的映射 if 选择语句 格式:if 判断条件{ 执行语句块 } [注意]:判断条件不能是普通常量表达式,只能是关系运算或者逻辑运算的表达式,只有判断条件为真的时候,才能执行语句块的内容 在swift语言中,尽量不要在if判断条件出现判断可选类型的变量是否等于nil.将可选类型的值赋…
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式.其标准定义为<Adobe Flash Video File Format Specification>.RTMP协议也是基于FLV视频格式的. FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件.图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可…
SpringBoot的Actuator监控 Actuator:对系统的监控 是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中,主要完成微服务的监控,可以查看微服务之间的数据处理和调用,当出现异常时,可以快速定位问题所在 其功能和Dubbo的监控中心类似,区别就是一个需要专门部署,而这个是存在每一个Boot工程中的 这个我之前没了解过,下面上代码 <!--SpringBoot的 Actuator--> <depend…
一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录,在firstServlet目录下创建WEB-INF/classes目录 在classes目录下,写servlet程序. 类FirstServlet.java /** * */ package com.hlcui.servlet; import java.io.IOException; import…