同一程式裡Traditional ni-daq 與 DAQmx一起用為什麼會出現錯誤.

我一開始使用daqmx的counter做抓取頻率的動作~

下一步則用traditional ni-daq的counter做計數~~

兩個有用到同一個counter~

在daqmx 抓頻率結束後我有做清除的動作~在traditional ni-daq 計數後我也有

作counter stop 及control ctr 作reset動作~

為什麼第一次daqmx抓頻率正常停止後用traditional ni-daq 做計數也正常~

在來再重新做一次daqmx抓頻率就開始錯誤了~

好像是說我裝置要reset~就是下面的訊息~

"Possible reason(s):

Device not available for routing.  It is possible that the device needs to be reset or that the device is being reset.

If you are resetting the device, wait for the reset to complete.

For example, if you have used the device through Traditional NI-DAQ, you must reset the device before the requested route can be made.  For SCXI devices, you must reset the communicator DAQ device. Call the Traditional NI-DAQ Device Reset VI or the Init_DA_Brds function. To reset all devices in Traditional NI-DAQ, right-click the Traditional NI-DAQ Devices folder in MAX and select Reset Driver for Traditional NI-DAQ.

Task Name: _unnamedTask<D>"

請問我該怎麼解決~~

謝謝

這是因為traditional DAQ比較笨的緣故,使用完後並不會完全釋放資源,若要使用DAQmx,請先到MAX底下指定traidtional DAQ作資源釋放動作(忘了是reset還是release之類的),這樣才能順利驅動DAQmx,建議通通使用DAQmx來撰寫。

恩~~這位大大你好~~

原來不是在traditional daq做reset喔~

可是我程式已經用traditional daq寫了一堆了~~daqmx是剛學的~不太會弄

所以我想請問一下max下指定traditional daq做資源釋放要怎麼用~是使用哪一個VI~是daqmx control 這個VI可是裡面沒有reset ~

還是直接用daqmx reset device.vi這個ㄋ~~可是好像沒用ㄟ~~

請大大幫幫忙好嗎~~謝謝

基本上您再撰寫程式時只能選擇使用傳統或是DAQmx

不能夠併用這兩種API

當您的DAQ被用傳統的API寫成的程式執行過之後

DAQmx就會無法動作

這時您要到MAX下選擇traditional DAQ之後再按右鍵選

reset driver for traditional DAQ

然後DAQ卡才能夠在執行DAQmx的程式

 

恩~這位大大~你好

這個問題我有請教過NI的工程師~但他告訴我是可以併用的~

可是他沒提到會有這類的問題出現~~

但是如果像這樣還需要再daqmx按右鍵選tranditional daq做reset的動作~

那不是粉不方便嗎~沒有VI可以直接讓他reset嗎~~

試了一早上~~我在daqmx之前加了個tranditional daq 的device reset.vi

結果~daqmx執行第二次可以正常了~~但程式跑到tranditional daq的一個counter start.vi的時候卻卡住~什麼錯誤都沒有~就當在那~停止也不行~還要強制關掉~~我試了很多次都一樣~請問這是什麼問題~

然到真的不可以並著用~

謝謝

方便把你的程式碼放上來嗎?也許這樣比較容易了解你的狀況,此外還有一種方法可試,就是在DAQmx程式碼之後Traditional DAQ之前放一個DAQmx的reset device vi試試。

順便一提,雖然traditional DAQ和DAQmx可同時放在同個程式裡對同張卡片驅動,不過不能同時驅動,只能一次一種,依序執行。這樣有三個缺點,一是同步化時(如AIAO)無法動作,二是每次都要reset device,降低程式執行效率,三是程式出錯時不易維護。所以,還是建議你全部都用DAQmx程式碼撰寫,而且由於DAQmx支援multithread,執行效能也比traditional DAQ好很多。新版的DAQmx 7.4更支援模擬DAQ卡的功能,還能讓你在沒有安裝DAQ卡的電腦上撰寫程式呢!

嗯嗯~~謝謝大大解說~~

我兩個併用一直都搞不定~~

結果還是全部改用成daqmx了~~~~

還有新版的daqmx7.4我也灌好了~~~

比較想知道的是~沒有daq卡也能模擬的功能~

因為只有實驗室有DAQ卡~~想在宿舍寫程式都不行~

請問"沒DAQ卡也能模擬撰寫程式"的相關資料要去哪裡找ㄋ~~

謝謝

 

只要在MAX設定就好了,使用方法跟一般DAQ卡沒兩樣,除了它不能真正量測訊號之外…

1.開啟MAX,在Device & Interface處按右鍵選creat new

2.選擇模擬DAQ卡

3.選擇要模擬的DAQ卡(支援DAQmx的才能看到)

之後看到顏色為黃色的就是模擬DAQ卡啦,祝你使用順利

 

恩~~謝謝~~還好我的有支援

初學者請多多包函38451.6096180556

參考:下載DAQmx7.4常見問答集(FAQ)的文件。其中在第23頁有提到Traditional NI-DAQ及NI-DAQmx是可以共用的,但是只能依序使用──不能同時使用。原文如下:

我能不能同時使用Traditional NI-DAQ及NI-DAQmx?

如果你擁有兩部DAQ設備,而且其中一部使用Traditional NI-DAQ,另一部使用NI-DAQmx,你就可以同時使用Traditional NI -DAQ 和NI-DAQmx。如果你只有一部DAQ設備,你仍然可以一起使用Traditional NI-DAQ 及NIDAQmx,但是只能依序使用──不能同時使用。你必須在程序中重設介面卡,切換使用Traditional NI-DAQ及NI-DAQmx 驅動程式。

  • 在LabVIEW 中,要在Traditional NI-DAQ程序的結尾使用『Device Reset vi』,在NI-DAQmx 程序的結尾使用『DAQmx Reset Device VI』。你必須建立一個Traditional NI-DAQ的虛擬通道及一個NI-DAQmx作業(Task),分別供兩個驅動程式使用。

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