呼叫 .dll 控制儀器的問題

小弟因工作上需要用到 usb 去控制這CA-210 這台儀器,但這台儀器只提供 .dll 的驅動程式,因為他有附上一個VB 的程式,而小弟也試著學習,目前已經可以在LABVIEW上呼叫他的ActiveX的控制項了,但是因為他的連線必需用到 dll 小弟實在看不懂說明中的 C++ 語法,跟LABVIEW 又實在真的對不起來,所以想請各位先進幫小弟看一下該如何使用他的 autoconnect 的功能,目前小弟在他的說明中找到這一段文字,和一個C++ 範例如下.

在 4-1-4-2:COM Interface

和在4-2-1-4-1: CA-SDK Object Creation 中有一段C++的自動連線範例

我不敢奢求各位幫我寫程式,但看能不能指點我從何開始.附檔是他的說明檔和用到的dll.ca-200.rar

我自己在NI DEVELOPER上找到有關ActiveX COM 的用法了,如下圖希望對有用到的人有幫助

先在DOS模式下,打入regsvr32 xxxx.dll 註冊就可以使用了.

KENLIN38496.5559722222

不過我另外有一個問題就是我有一個VB的範例程式,他直接呼叫AutoConnect 就可以和儀器連線了,而我用LABVIEW呼叫就出現錯誤,如下圖

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

另外,我的說明檔中也有一段說明,但是還有一些問題

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

//CA-SDK
 long lcan = 1;
 _bstr_t strcnfig(_T("1"));
 long lprt = PORT_USB;
 long lbr = 38400;
 _bstr_t strprbid(_T("P1"));
 _variant_t vprbid(_T("P1"));

 try{

  m_pCa200Obj = ICa200Ptr(__uuidof(Ca200)); 

m_pCa200Obj->SetConfiguration(lcan, strcnfig, lprt, lbr); 
說明檔中,和我在LABVIEW叫出來的符合的只有CaNumberVal =1 和 BaudRateVal = 38400 ,這個沒問題,但是在PortVal 是一個I32 的變數,範例程式放入的卻是字串,還有哪個ConnecStringVal 我就完全看不出他放了什麼東西進去,請各位先進指導一下小弟吧.

根據使用 application 的 reference 、
VISA 和 GPIB 的 coding 經驗,
一般我們都會對所使用到的資源,
使用之前,做「開啟」的動作,
使用完之後,做「關閉」的動作。

所以我在想,
如果你加上一個「Automation Open.vi」
來開啟你所使用 Automation Refnum ,
或許可以解決問題。

Airbolt38496.6053935185

[QUOTE=Airbolt]

根據使用 application 的 reference 、
VISA 和 GPIB 的 coding 經驗,
一般我們都會對所使用到的資源,
使用之前,做「開啟」的動作,
使用完之後,做「關閉」的動作。

所以我在想,
如果你加上一個「Automation Open.vi」
來開啟你所使用 Automation Refnum ,
或許可以解決問題。

[/QUOTE]

太感謝Airbolt的提點了,經驗這種東西真的太神奇了,我自己都找到快放棄了,您一句話就讓我能完成這個功能.

請問您最後有試出來嗎?CA-210?

可以的,當初我在用是可以透過 USB 去控制 CA-210 .

我因為工作關係也需要利用USB去控制CA-210,

參考此篇主題而進行程式編寫測試,

但我遇到一個問題,

希望能各位能指點我解決方向,

程式及訊息如下所示:

另外參考KENKIN一開始的發文,

"先在DOS模式下,打入regsvr32 xxxx.dll 註冊就可以使用了"

在執行\regsvr32 CA200Srvr.dll卻出現

"LoadLIbrary("CA200Srvr.dll")失敗-找不到指定的模組"

會是缺少這個註冊而造成上述問題嗎?

 

把CA-210 的SDK 灌起來,再參考一下附檔吧.

Untitled 1.vi

看來是我誤解它的說明了,

謝謝KENKIN的解惑。

sorry....

是KENLIN...

按太快了

你好 , 想跟您請教 , 在量測過程中如果要用到ficker模式要如何切換到此模式 , 因為現階段上面所量測的皆為亮度量測 , 在麻煩您回覆 , 感謝您