基本上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)等待接收端連線
最近寫了個比較需要運算的程式
發現自己的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的位置通過球到球的左側,就可以判定通過這一組障礙
LabVIEW FP物件並不能被消滅(至少我沒找到) 只能被隱藏
所以一開始就要布置在FP上而且要盡可能重複使用
FP上物件的位置可以從property取得, 同理也用property控制
FP往下是Y+,往右是X+, 利用while loop, 每個loop都改變一點位置
加上適當的delay即可製造出物件移動的錯覺
最近有人問LabVIEW能不能寫出flappybird那樣的東西
身為不務正業之人肯定要試一下的
概念上這個程式不難
我希望遊戲的呈現是執行後有個標題畫面, 球(或鳥)會在視窗中央上下飛翔
來了個有點複雜沒辦法用batch檔來處理的批次檔名變更需求
用 labview大概十幾分鐘可以弄出來, 但執行檔實在太大
所以改用python處理看看
IN和T是我們用來紀錄測試通道和測試次數
新舊命名規則對於IN和T的起點定義剛好相反,使用的碼數也不一致
必須從原始檔名分別把兩個字串抽取出來做運算變更
紀念為了使用python GUI開發工具導致開發環境完蛋的事件
原本我的Vista上用python3玩opencv是沒問題的
但用舊的作業系統就是原罪!!!
PyQt5-tools是可以協助python設計使用者介面然後轉成python code的工具
設計好的介面可以直接用 pyuic5 - o 目標檔名.py 來源檔名.ui 轉換成py文件
最近玩影像辨識,想要把辨識前後影像合併在同一張圖裡儲存
找了半天都沒有對應的function,網路也沒有相關資訊
最後發現只要把image轉成array再把所有array concatenate到同一個2D array就行
如圖示影像會沿水平方向合併在一起
如果希望垂直方向併入其他影像,只要把array transpose拿掉即可
大概一樣是學生習題
輸入五張不同點數撲克牌然後相加
能輸入字串1~13,也可以輸入字串AJQK
思路是用isdigit檢查輸入是不是數字,是就直接迭代,不是查表對應的數字
所以建立兩個list用來對照, 找出字母在a的index然後撈出b對應位置的數字
# -*- coding: UTF-8 -*-
論壇看到的習題,大概是大學的
輸入6位數字,輸出奇數總和和偶數總和之差
思路很簡單就是依序抓最前面兩個數字相減,然後所有結果相加
原則上是用迭代法就可以把結果相加
但我不知python的語法是怎樣
所以用list來暫存結果(第一行的宣告)
NotePad++ (npp)是一個好用的文字處理軟體, 可以用來撰寫程式
經由設定程式語言可以提供自動變色及指令提示等類似 IDE的功能
另外還可以用外掛編譯和執行寫好得程式
但是我安裝的7.5.6版沒辦法執行python, 要安裝對應的外掛才能執行,
網路上查都是說用選單裡的plugin manager就可以安裝, 不過找半天都找不到這選項
想說要加個註解紀錄測試程式內容,結果居然就噴 error…不能執行了
一查原來是Python必須要宣告編碼才能放中文在code裡
通常是把以下其一放在檔頭宣告,big5是windows作業系統用的
#-*- coding: utf-8 -*- ←表示使用 utf-8 編碼
#-*- coding: cp950 -*- ←表示使用 Big5 編碼