labview要点速记
labview串口利用VISA形成的统一编程接口,来操作串口。
labview程序分为front panel和block diagram,front panel中注意Array的使用,放置一个Array对象之后,应用numberic control或者其他control,indicator去初始化。
labview中使用block diagram中使用时要注意:programming中的控件,对于每一个port都能利用create生成constant,control,indicator.大部分控件都能转换成相应的control,constant,indicator。
waveform chart使用时,由于properties中autoscale的勾选会导致波形过于密集或稀疏,手动调节一下,就相当于调节示波器时基的效果了。
labview中默认会将数据都缓冲起来,会造成数据在控件上的堆积,可以在File>>VI properties>>excution设置掉
串口协议的分类:
1.帧头+数据+校验+帧尾,校验很重要,一是避免数据传输错误,二则可以指定重传的规则。
2.帧头+len+data+check value,应有timeout检查。
3.接收超时检测来判断。TCP/串口编程时:存储结构优先采用队列方式,注意对寄存器的操作。
TCP编程
要点
- tcp/ip编程中常常会以timeout来模拟阻塞(默认长达25秒),因此希望以不阻塞的方式来实现时,要设置好延时.
tcp/ip之tcp read function
有四种模式:
1.Standard: timeout时限内没有得到足够的字节数,则将部分字节传回并报告一个timerout error.
2.Buffered: timeout时限内没有得到足够的字节数,则将空字节传回并报告一个timerout error.
3.CRLF:有换行符或字节数已经足够,或者timeout时限已到,则连带LF一起传回.
4.Immediate:timeout时限内没有得到足够字节数,只有不是0 byte则返回,0 byte则返回timeout error.tcp/ip之tcp file translate
1.采用先传名称,然后双方相互告知文件长度,最后再传文件内容。
2, 如果文件长度太长,采用分片传输的方式循环传送,这样能避免非稳定情况以及错误的发生- 客户端编程采用open socket - write/read - close 模式
- 服务器端编程采用 create listen-waiting for listen -read/write - close 模式
对数组分割操作时,注意index要有变化。
while循环的终止条件有两种:stop if true,continue if true。
local var 常常可以用属性节点来互换。
shift register用于累加,要设置归零操作。
labview尽量避免顺序结构,顺序结构常见于初始化。
引用:控件引用:右键->create->reference即可;通用控件引用:前面板->搜索vi refnum->右键->select vi server->generic->gobject->control…
波形图表控件设置实时时间显示:get date/time in seconds+信号 -> build waveform -> waveform chart
file path的属性中有设置是选文件,还是文件夹的选项
labview之事件+while
- 程序特点
这样的结构适用于处理随机发生的事件,避免对控件的实时轮训,此时的事件中有一个默认timeout,意思是事件发生了,过了timeout时间还未结束,就进入timeout event;此时注意在事件中的变量是否要在timeout event中还要发生作用,否则的话就可以用local var or property node 来解决。
- 程序特点
labview之队列
- 程序结构
obtain queue -> enqueue ->release queue,常见于并行的两个while循环,这样便能形成一个典型的生产者消费者编程模型,通过不同循环之间的延时操作来模拟取放速度,同时最重要的是利用队列来实现对错误的处理和并行循环的控制,当主循环被关闭时,就将终止动作入队,同时在从循环中取出终止动作,这样就能实现同时关闭了。
- 程序结构
labview之jki状态机:
- 安装(2016版)
点击Block Diagram中Addon,转到labview官网,搜索JKI State即可,建议通过VIPM来安装。 - 运行原理
先执行Macro:Initialize -> Data:Initialize ->Initialize Core Data -> UI Initialize -> UI Front Panel State -> Open ,然后转入Idle,在Idle中的事件结构中加入自己定义的事件(用 add state to queue 控件将自己的事件加入),最后在到new category中加入自定义的case,这样处理完状态队列里的所有case之后,就可以回到Idle状态了。
- 安装(2016版)