儲存資料的問題

我想要將由DAQ卡所抓取到的資料存入文件檔之中,並且得知每個時間所對映的值,但是我在存的文件檔之中看到的是一堆雜亂無章的數據,無法判別該數字所映的時間(程式如下)

 ![](upload://6KFG5mlFhUGv6uuvupTVxgi4YPh.jpeg)

得到的文件:2004-10-13_120920_temp_1.txt

我又嘗試使用bulid array的功能去做,得到的數據能對映到時間了,但這樣變成每一秒中最後抓到的值,其中0~1秒時的數據都沒被記錄下來(程式如下)

![](upload://qzBCObQiQFrKBAOfb9Aotpf7wz5.jpeg)

得到的文件2004-10-13_121024_temp_2.txt

因為我今天要做定位的功能,所以每一時間所對映的數值對我而言都很重要,若我今天想要得知每0.5秒(不一定是0.5秒,我希望間隔時間能自己設定)所對應的值的話,請問我應該要如何修改程式才能得到我希望的功能呢?謝謝

我寫了一個類似的方式,不知道是不是你要的結果.

While Loop裡,設定每1000ms執行一次.每次會將亂數產生的數值與i(執行次數)的值一起存到指定的456.txt檔案裡.

![](upload://rBQZksSyo0SlZa43RtnKzSDxcPb.png)

存檔的結果,如下.

![](upload://g6TdsOgAH1JBQ8gdd7cGwMsjgbD.png)

小弟在這提出一點點的意見

既然對時間很要求  或許可以使用 Tick Count

儲存取得資料點的Tick

![|357x318](upload://wavdH2zNdlDRoQ5qOXL7vFAQEGA.jpeg)

![|245x185](upload://AuaX0leffxie7Ct9aKagbJi54sY.jpeg)

感謝二位前輩的回答,前輩的方法我都試過了,但是現在我的問題卡在所存的資料都是在1秒時抓到的值,而無法得知在0.5秒時的值

我想請問這是不是因為從DAQ卡抓到的資料,在經由bulid array時,資料的儲存是以1秒為一個週期在儲存?

如果是這樣的話,有沒有其他的方法可以將儲存的週期改為每0.5秒存一次值呢?

謝謝前輩的回答

xiang:

其實你第一個圖的接法沒有錯,資料並不是雜亂無章的,資料是由左->右,由上->下
如果你的number of samples設10點的話就只會看到10筆資料
第二個圖因為你把一個waveform data的格式組成陣列,那儲存時只會存到陣列中的Y值的某一點,所以你覺得有錯

如果要找到某一筆資料的時間點的話,可以由 t0+n*dt 來計算
舉例來說:一個waveform date的格式如下圖

裡面包括有起始時間t0,資料間隔dt(=1/sample rate)及Y值(資料數值)三種資訊
假設我的sample rate設1000,所以dt=0.001
從08:02:56開始的一秒內我有1000筆資料進來,如果我想要知道0.5秒的資料是什麼, 就找第0.5/dt=500筆資料,也就是Y陣列索引499的那筆
或許有點亂,但是我想你應該看的懂吧![](upload://wh1Jr0invKZTARRL2Hqlvc8do63.gif)

 

yao38273.8367361111

感謝yao的回答,我後來有嘗試過在第一個程式之中,設定number of samples參數,果然只存了10筆資料進去,但這樣只有取得前10筆資料,後面的資料直接被 捨去了

另外我也有嘗試只設定sample rate的值為60,回去看存的txt檔中,所存的數值數量並不等於60,這是否意味著sample rate就是如說明上所寫的1000 samples/sec,沒有更改的空間?再次感謝前輩的熱心回答^^

xiang38273.8810185185

yao:

我嘗試過你的方法,我是去把AI Acquire Waveform(waveform).vi中waveform date的功能copy出加到我的程式中,但這個方法好像只能得知最後一個1秒的資料

例如:今天我的程式執行了10秒鐘,其中0~9秒的資料都沒辦法得知,是否有辦法得知其他時間的資料呢?感謝你的回答

[QUOTE=xiang]感謝yao的回答,我後來有嘗試過在第一個程式之中,設定number of samples參數,果然只存了10筆資料進去,但這樣只有取得前10筆資料,後面的資料直接被 捨去了

另外我也有嘗試只設定sample rate的值為60,回去看存的txt檔中,所存的數值數量並不等於60,這是否意味著sample rate就是如說明上所寫的1000 samples/sec,沒有更改的空間?再次感謝前輩的熱心回答^^

[/QUOTE]

rample rate是指一秒中擷取多少筆資料,所以資料的多少是依據number of samples,而非sample rate,另外1000只是預設值,可以自行設定
我覺得我上一篇已經講的蠻清楚的耶,不知道你覺得哪裡有疑問![](upload://qPCmzfq2KigUaPncn6Um67RUCob.gif)

yao:

您的說明我看的懂,關於我問的那個問題,我後來發現原來是因為我只修改sample rate但沒修改number of samples,
所以我存的資料數還是number of samples的預設值1000筆。
我後來改成同時修改sample rate為60和number of samples為60之後

程式及文件檔如下:

2004-10-14_162217_temp.txt

這樣我己經可以得到每0.1秒所對到的數值了,再次謝謝您的熱心解說

另外這是我的另一個問題,我將sample rate改為60,但number of samples改為600下去跑,
存的數據數依然為60筆,但是在Waveform Graph上面的時間軸只跑到0.1秒

2004-10-14_162539_temp_2.txt

所以我想問說在這種情況之下,是不是只有存前10筆的值呢?

從圖中看起來,你的sample rate=600,Number of sample=60才對
這樣才會只存60筆,而60筆資料剛好只有0.1秒
這樣所有的資料才是一致的

應該是你以為你設的SR=60,Number of sample=600
其實不是這樣的,再check看看吧![](upload://wh1Jr0invKZTARRL2Hqlvc8do63.gif)