Labview编程——数据保存及队列操作

        最近由于项目需求被拉去学了下Labview,发现这玩意挺方便的,完成了几项客户需求后领略到了基于数据流的图形化编程上手快且比用高级语言开发程序更简单,因为Labview将复杂的界面和算法代码都隐藏在一个个控件、图标和连线的背后,我们不用再去编写那些复杂的算法代码。

        这项目是苹果公司的一个光器件性能测试项目(估计是用在苹果手表上的),测试样品各项数据是否达标,我们公司负责研发出测试机台提供给ST,再由ST员工完成样品性能测试。有几项测试内容使用的是NI的PXI机箱和数据采集卡,苹果提供了Labview主测试程序,将环境控制好且各个设备连接上后就可以在NI机箱上打开Labview直接开始运行测试了(当然还要安装些驱动啥的)。刚开始心里还在嘀咕,不就是打开程序点运行就完了吗,我这还学Labview干个锤子。后来意识到了不可能让操作人员手工去记录那些数据吧,太落后了。

       后面客户也提了几点主要需求:1.对话框提示操作员完成指定的操作后开始测试(如扫码、切换指定的开关、将样品移动到不同的位置)。2.扫描样品背后的二维码获取SN值。3.将测试的数据保存为指定的.csv文件。

       首先便是需要完成主体功能——对话框流程,这可是要了我这个新手的老命,研究了好久不知道要如何实现这种对话框流程,入门时浏览的书籍《LabVIEW 8.20程序设计从入门到精通》上面没有介绍,网上搜Labview对话框流程也搜不到什么具体的信息。后来还是问了NI的大佬才解决问题,利用了Labview里面的队列操作。将各个部分程序用条件结构框起来,且分别标识为不同的条件,如Measure、SN_Change、Popup等,外面再包个While循环让元素不断的出队列。Measure里面便是苹果提供的主测试程序,测试完后让元素Popup入队,入队后While循环里面有个出队列操作会立即让Popup出队,此时条件结构便会跳到Popup里面执行相应功能如弹出对话框,提示操作员移动样品位置、切换到相应开关或终止测试按钮,然后点击对话框中的确认按钮便会执行Measure元素入队,程序便又会跳到Measure条件结构里面开始下一轮测试,如此循环反复就实现了对话框流程。此中还有许多细节就不列举了,想想还是有点复杂有趣的。

       第二个功能扫码的话还是比较好搞的,用的是Dtatalogic的固定式扫描器,将其固定在机台的底部某个位置,操作员开始测试时首先将样品移动到扫码位置获取SN值后再进行后面的测试。先利用DL的软件将扫描器设置为单次触发模式,Labview里面再通过串口与扫描器通信,需要扫码时便发个指令过去开始扫描,扫到之后再发个指令停止扫描。用Labview进行串口通信挺方便的,网上一搜便会有实用的模板。

       第三个功能保存为.csv格式的数据刚开始时也挺好弄的,先将数据标识及其他信息标识写入文件,各个指标的数据测出来后使用“连接字符串”控件连在一起,中间加入逗号分隔开来,最后再加入换行符写入文件便OK了。

       可另外一个测试项目的需求是需要保存所有测试过程中的数据,一小次测试过程中会生成9步数据,程序运行后会有好多个一小次测试,均需要保存为下图的格式所示。开头想想还以为挺容易的,不就是多加几个换行符吗,后来仔细想想单纯的加换行符只能竖立着一组数据一组数据保存下来,这是行不通的。

       想了好久没想出来就又去问了下NI的大佬,大佬果然是大佬,立马就有了方案。可以将每一小次测试的数据生成为一个文件,里面含有9步数据,最后总的测试完毕后再将各个数据文件拼接起来形成一个总的数据文件。这样的话如何将各个小文件里面的数据拼接起来便是需要解决的主要问题,文件1格式是A\nB\nC\n,文件2格式是D\nE\nF\n,搜索\n把A B C D E F都识别出来,然后组成AD\nBE\nCF\n写入总的数据文件。正好Labview里面有个控件“匹配模式”,选择“\n”换行符为匹配对象,控件会输出“\n”之前的字符串和“\n”之后的字符串,真是妙哉,如此一来便可完成需求,接下来就是具体实现过程中的细节处理了,问题不大。

  

评论 6 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

_道明

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值