数据转化模块和数据转化模块与串口通讯模块之间使用生产者/消费者设计模式,生产者/消费者设计模式是多线程编程中最基本的设计模式,是事件处理器和队列消息处理器相结合构成的复合设计模式,使用非常普遍
[2"]。数据由生产者提供方,并由消费者进行消费方。生产者循环和消费者循环之间存在数据缓冲区,激光测距传感器返回的消息帖经过延时后进入VISA读取节点的入口,而后消息喊被存入利用队列实现的数据缓冲区,由VISA读取节点以字符串的形式取出指定字节长度的消息中贞。
数据转化模块
数据转化模块将读取的格式为“sNq"hcxxxxxxx+c<tnn>”字符串数据,先截取有效字符串,再通过十进制数字符串至数值转换节点转换为实际的距离值,转化为一个十进制数,单位为m。 数据转化模块程序如下图3.12所示
数据转化模块和数据转化模块与串口通讯模块之间使用生产者/消费者设计模式,生产者/消费者设计模式是多线程编程中最基本的设计模式,是事件处理器和队列消息处理器相结合构成的复合设计模式,使用非常普遍 [2"]。数据由生产者提供方,并由消费者进行消费方。生产者循环和消费者循环之间存在数据缓冲区,激光测距传感器返回的消息帖经过延时后进入VISA读取节点的入口,而后消息喊被存入利用队列实现的数据缓冲区,由VISA读取节点以字符串的形式取出指定字节长度的消息中贞。 数据缓冲区与队列类似,是一种先入先出(FIFO)的数据结构。数据缓冲区是一段设定长度的内存区域,默认可以存储1024个数据。数据缓冲区和队列之间的区别在于: 第一,初始化后的队列和数据缓冲区中都没有数据,当数据不断进入时对于数据缓冲区,区内数据未达到最大许可长度时,数据会不断增加。而对于队列来说,区内数据是否增加否增加取决于是否出队,即是否有读队列过程,如果入队速度小于出队速度,贝fj队列中将不会残留数据,如果出队速度小于入队速度,队列中的数据会不断增加。 第二,当队列和数据缓冲区内的数据都达到设定长度时,队列要求想要进入的线程等待直到队列中出现空闲位置,新数据才能入队;而数据缓冲区则不同,数据缓冲区将 根据数据进入缓冲区的先后顺序进行移出,也就是所谓的先入先出[21]。 数据处理模块 数据处理模块由活塞平面最小二乘拟合、活塞平面倾斜度计算及报警、煤气柜柜位(容)检测及报警、活塞平面运动速度和加速度计算及报警等部分组成。其中,活塞平面最小二乘拟合的过程是通过在LabVIEW编程中调用MATLAB脚本节点实现的[22]。 MATLAB是(MATrixLABoratory矩阵实验室)的缩写,由美国MathWorks公司 开发。MATLAB是一种功能强大的数学软件,在科技应用范畴内备受瞩目,可以进行可靠的数值计算和符号计算。对用户来说,将LabVEW软件与MATLAB相结合使用,将会使虚拟仪器的数据处理功能变得更加强大。LabVIEW中的MATLAB脚本节点是通过使用ActiveX技术来实现的。ActiveX是由Microsoft公司定义的,是主要用于Internet的对象链接与嵌入技术(OLE),它的出现 是为了实现网络上不同应用程序间交换信息的功能。ActiveX模型包括以下几种技术:ActiveX控件、ActiveX脚本处理、Active文档、ActiveServer以及ActiveX讨论。ActiveX 脚本处理是配合使用了ActiveX控件的处理过程,一般使用在例如VBScript和JavaScript等脚本语言中,通过使用脚本语言,使程序的交互能力更强【2^]。 活塞平面最小二乘拟合 由第二章所建立数学模型可知,连续测量点的坐标可分别表示为 5(^2,>^2,22)'C"(X3,y3,23),D{x4,y^,z^),0{x^,y^,z^)o本系统建模形式J、B、C、D四点可表示为j(r,0,/j广/^),C(r,0,/^-/^),D{0,-r,h^-h^),坐标原点、0(0’0,IO。其中r为活塞半径。首先,需要由测量点J、B、C、D坐标分别用测量数据和已知条件表示出来,然后通过编写MATLABscript脚本节点最小二乘法拟合平面的程序图进行计算,