簡體   English   中英

使用php將Labview程序接收的類型轉換數組轉換為float數組

[英]Converting the type casted array received from Labview program into float array using php

我在labview中有一個程序正在發送UDP數據包,並使用php程序接收這些數據包。 因此,labview程序是發送方,而php程序是接收方。

在labview程序中,使用類型轉換功能塊將float數組類型轉換為字符串,並作為UDP數據包發送。 當使用php接收那些數據包時,我正在接收一些不是可讀格式的數據。

在此處輸入圖片說明

我試過使用array_map('floatval',$ array)將字符串數組轉換為float數組。但是,這些值仍然不是可讀格式。

請幫我解決這個問題。

LabVIEW幫助Type Cast將您指向扁平化數據的文檔,其中提到該表示形式為big-endian(最高有效字節在前)。 LabVIEW如何在內存存儲數據的條目顯示了單精度浮點數( SGL )的實際表示形式:

SGL表示

既然您知道了LabVIEW將發送的內容,那么您的問題就變成了如何在PHP中對其進行解碼-如果您自己無法解決此問題,建議您提出一個新問題。

如果您可以更改LabVIEW代碼,則可以更改數據發送的格式,以使其更易於在另一端解碼。 可能的選項可能包括:

  • 如果網絡帶寬不是問題,請使用基於文本的標准格式,例如JSON
  • 如果JSON太大,但每個值只能提供8個字節,則在展平為字符串之前,使用數字調色板中的轉換“項目符號”將其轉換為DBL ,然后在LabVIEW端將字符串的字節重新排序為little-endian。 從Ton Plomp的評論來看,這對於您當前的PHP代碼可能是正確的。
  • 如果您確實不能為每個值提供四個以上的字節,但是數據值的范圍不太寬,則可以在展平之前將它們縮放為整數值( U32I32 ); 同樣,在另一端可能更容易解碼。

請注意,盡管您記錄了從類型轉換和/或展開到字符串的數據格式,並且歷史上一直保持穩定,但我不保證絕對不會在LabVIEW版本之間進行更改。

數據的不可讀部分也可以是UDP函數添加的標頭信息。 您也許可以解析該數據並丟棄。

要嘗試的另一件事是在Labview中讀取UDP Rx數據,並與Tx數據進行比較以嘗試確定正在發生的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM