數據轉化模塊和數據轉化模塊與串口通訊模塊之間使用生產者/消費者設計模式,生產者/消費者設計模式是多線程編程中最基本的設計模式,是事件處理器和隊列消息處理器相結合構成的復合設計模式,使用非常普遍
[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腳本節點最小二乘法擬合平面的程序圖進行計算,