基本上LabVIEW有內建了內/外插的VI
在Mathematics --> Interp & Extrap --> Interpolate 1D.VI
另外可以用Program-->Array裡的Interpolate 1D function
注意這function是不能做外插的
輸入原始資料範圍外的X, 會回傳Y array的邊緣點
基本上LabVIEW有內建了內/外插的VI
在Mathematics --> Interp & Extrap --> Interpolate 1D.VI
另外可以用Program-->Array裡的Interpolate 1D function
注意這function是不能做外插的
輸入原始資料範圍外的X, 會回傳Y array的邊緣點
首先是官方最推薦的方法, 效率最高
先初始化一個已知大小的array, 然後再把指定index的元素取代成我們要的數值
像是下圖這樣的程式生成一個從0遞增有6千萬個元素的array需要約~4.3sec
但是很多狀況下是不會知道程式執行下去最後會有多少元素
要進行和Arduino的連線,首先安裝LabVIEW(建議2012之後的版本)然後安裝NI-VISA,我的系統是VISTA,能使用的最新版本VISA是15.5版 (btw,2012和VISTA SP2可以支援的最新版488.2 driver是15.5)
再來是讓電腦可以認得Arduino,如果是買”便宜版”的Arduino,有可能插上去無法辨識。因為它用的是CH340系列晶片,要自己下載driver,檔名為CH341SER.EXE。
經由LabVIEW控制Arduino的三種途徑如下:
前兩種都是把LabVIEW的控制韌體燒進Arduino再經由LabVIEW寫的程式和韌體溝通,也就是說必須把原本裡面的韌體洗掉。若是新的專案,可以不用一有程式變更就要重燒韌體,開發和debug比較方便。但考量到泛用性以及原本的韌體已經開發完成的狀況,經由serial port溝通會是較好的選擇。
LIFA和LINX這兩個模組都是經由JKI VI package manager (aka VIPM)下載安裝,這個管理程式基本上在安裝LabVIEW時必須一併安裝,因為它不友善舊電腦,官網只有放最新版。安裝好後LIFA會放在Arduino分類,LINX會放在Makerhub分類。
基本上LIFA目前NI官方已不再維護,並以LINX取代,但這邊還是紀錄一下如何建構開發環境及會遇到的問題解法。
h5py是python用來生成HDF5文件的模組
HDF5多用在大量數據處理
在Python 3.8安裝h5py
直接用 pip install h5py 安裝會報錯
必須改用 pip install versioned-hdf5
LabVIEW做最基本的TCP/IP資料傳輸和可能遇到的問題處裡
準備兩個VI, 分別是傳輸端(TX)和接收端(RX)
流程是: TX先啟動等待連線-->RX建立連線-->TX送出資料-->RX接收資料-->結束
詳細說明如下:
傳輸端利用TCP listen來建立一個listner(或server)等待接收端連線
NI官方論壇有一則貼文發佈了手動安裝LINX的流程
可以讓Pi 2B, Pi 3A+, Pi 3B, Pi 3B+, Pi 4...等等都可以和Labview連上
使用的Labview版本也不再限於2014版
首先按正常流程安裝hRaspbian Buster (我在Jessie和stretch試過也沒問題)
最近寫了個比較需要運算的程式
發現自己的select用法會造成無謂的效率降低
我想要某個數字經由判斷式來決定要不要加入array,因為想要讓程式在同一頁就用了select
結果不管要不要加入array都會跑一次build array
造成array副本每個loop都大量被複製並存到記憶體
遞迴是個有點難理解的程式寫法
階層的程式解還是難以令人完全掌握其用法
我嘗試著用更多不同的題目來理解遞迴並用Labview的寫法重現
關於遞迴的設定在 Labview裡的遞迴(Recursion) 裡有清楚的說明
河內塔是三根竿子其中一根放了尤小到大N片有洞金片
首先把把FP大小設定為W450 * H500,要用到的物件、訊息框全部擺上FP,
除了遊戲中不會再變更位置的物件都要先放到預定的位置
這邊要稍微調整一下各物件階層關係,避免物件移動時意外被遮蓋
背景部份用兩張一樣的圖交替,圖必須設定為最下層
程式用sequence結構
Labview並沒有檢測元件overlap的功能,所以每個loop都要檢查所有障礙是否和球碰撞
首先檢查球是否位於障礙物1, 2之間的區域,上下障礙物X軸位置是一致的
如果是再近一步檢查求上緣小於3的位置或下緣小於4的位置
若其中一項成立則判定碰撞結束程式
另外若障礙物4的位置通過球到球的左側,就可以判定通過這一組障礙