学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
博客写作背景----项目中解决的问题
最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。LabVIEW并不局限于虚拟仪器的开发,它的作用是为大型复杂测试系统提供通用的软件开发平台。目前,LabVIEW已经成为测试领域应用最广泛和最有前途的软件开发平台之一。LabVIEW的查错、调试功能也非常强大。程序查错无须先编译,只要有语法错误,LabVIEW就会自动显示并给出错误的类型、原因及准确位置。进行程序调试,既有传统的程序调试手段,如设置断点、单步运行等,又有独到的高亮执行工具,就像电影中的慢镜头,使程序动画式执行,利于设计者观察程序运行细节。同时可以在任何位置插入任意的数据探针,程序在调试状态下运行时,LabVIEW会给出各探针的具体数值,通过观察数据流的变化情况、程序运行的逻辑状态,寻找错误、判断原因,从而大大缩短程序调试时间。
下面是我最近写程序的一些知识,进行了部分的整理,发出来和大家一起分享,也方便我以后查找自己的编程过程。
编程知识点–软件环境
硬件连接好后,要确保计算机中安装有相应的软件环境,具体地,除了LabVIEW外,还应安装可对单片机进行开发的IDE(集成开发环境),例如本章中使用的Arduino IDE。
Arduino IDE
Arduino IDE主要是针对Arduino开发板的,利用Arduino IDE,也可以对其他类型的开发板进行编程,但需要对一些参数进行设置。
1)Arduino IDE的安装及参数设置
首先下载Arduino IDE(本教材使用的是Arduino IDE1.6.7)并安装此软件。安装好Arduino IDE后,还需要设置一些参数,才能利用它实现对chip KIT WF32开发板的编程。具体的参数设置过程如下,首先在图12.8所示的界面中单击“文件”→“首选项”,弹出如图所示的界面。在“附件开发板管理器网址”中输入“https://github.com/chipKIT32/chipKIT_core/raw/master/package_chipKIT_index.json”,单击“好”按钮,退出该界面。
如果采用的是Arduino开发板,可以跳过上面的参数设置这一步骤;如果采用的是其他开发板,但也想利用Arduino IDE对其进行编程,对于“附件开发板管理器网址”的信息,可以联系开发商获得。
2)Arduino IDE编译环境简介
安装好的Arduino IDE的界面如图12.10所示。在Arduino IDE中,程序包括三个部分,分别是“程序结构”“值”(变量和常数)以及“函数”。其中,程序结构具体又可分为两部分,分别是“setup()”和“loop()”。具体地,“setup()”中的程序只会执行一次,而“loop()”中的程序代码则会循环执行。
表12.1介绍的是Arduino IDE中的14个常用函数。在使用这些函数时,需要注意以下几点:①在使用函数digitalRead和digitalWrite之前,需调用pinMode函数,设置数字引脚是输入或者输出状态。②在使用函数analog Read之前,无须调用pinMode函数。③向串口写数据,共有5个函数可以实现,分别是Serial.write()、Serial.print(val)、Serial.print(val,format)、Serial.println(val)和Serial.println(val,format)。其中,函数Serial.write()写入的是二进制数据;Serial.print(val)和Serial.print(val,format)写入的是ASCII码;Serial.println(val)和Serial.println(val,format)写入的是ASCII码加上回车符和换行符。④对Serial.print(val)函数而言,如果输出的为浮点数,默认保留两位有效数字;其还可以输出整数、字母和字符串等。举例如下:Serial.print(78)输出“78”;Serial.print(1.23456)输出“1.23”;Serial.print(“N”)输出“N”;Serial.print("Hello world.")输出“Hello world.”。⑤如果想设置输出数据的格式,可以用Serial.print(val,format)函数。其中,如果val为整数,format可以是BIN(二进制)、OCT(八进制)、DEC(十进制)和HEX(十六进制);如果val为浮点数,format就是要保留的小数位数。举例如下:Serial.print(78,BIN)输出“1001110”;Serial.print(1.23456,2)输出“1.23”。⑥函数Serial.available()经常用来判断串口缓冲区中是否有数据。
LabVIEW中相关的函数
对于几乎所有种类、型号的单片机,在LabVIEW中都可以利用VISA函数编写串口通信程序,以实现对单片机的控制。对有的类型或型号的单片机开发板,生产厂商已经开发好了相应的驱动程序,即只要利用这些驱动程序,就可以很方便地实现串口通信。这些专门的驱动程序可以与单片机开发板生产厂商联系并获得。
1)VISA函数
在LabVIEW中,经“函数”选板→“仪器I/O”→“VISA”子选板途径,可以找到VISA函数,具体如图12.11所示。在这些函数中,使用较多的主要有4个,即“VISA配置串口”“VISA写入”“VISA读取”和“VISA关闭”,具体介绍提供在表中。
利用VISA函数开发串口通信程序的步骤如下:①调用“VISA配置串口”函数,选择单片机与计算机相连的串口,并对串口参数进行初始化;②调用“VISA写入”函数,向单片机发送指令,或者调用“VISA读取”函数,从单片机中读取数据;③调用“VISA关闭”函数,释放掉占用的硬件资源。需要注意的是,对于第2步,计算机与单片机之间的通信协议要由使用者自己事先规定好。
2)专门驱动程序
对于chipKIT WF32来说,当按照附录B安装好LINX后,再按照附录C在LabVIEW中运行MakerHub,会在LabVIEW的函数选板中自动添加一个MakerHub子选板,如图所示。这些函数是开发板生产厂商事先开发好的,它们的功能与本教材第11章中所讲的仪器驱动程序是类似的。利用这些函数,可以在LabVIEW环境下实现计算机与单片机开发板的通信。