我用的是VB6.0
1、IVI配置文件用VB樣怎管理(不用Max) ,有無提供VB操作的函數?
2、裝NI IVIEngine,安裝具體儀器IVI驅動,在VB裡引用iviscope.dll,在max裡配置,用分類驅動例:iviscope進行操作,就是完成一個IVI驅動,實現互換儀器的過程? 是這樣的嗎?
3、用邏輯名方式初始成功:iviscope.InitializeWithOptions.IviScope_InitWithOptions("tkds30xx", True, True, "Simulate=0,RangeCheck=1,QueryInstrStatus=1,Cache=1", mlngInstrSession(i))
此時邏輯名Resource: "TCPIP::192.168.0.2::INSTR"
改為:iviscope.InitializeWithOptions.IviScope_InitWithOptions("TCPIP::192.168.0.2::INSTR", True, True, "Simulate=0,RangeCheck=1,QueryInstrStatus=1,Cache=1", mlngInstrSession(i))
失敗!如果還是可用Resouce初始化,那邏輯名就沒什麼用了,可以這樣理解嗎?
4、 用邏輯名與直接用Resource初化有何區別。
5、如果使用Tek 的ivi-com驅動做互換儀器,就要裝Agilent的IVIEngine(還沒看到過),試過將羅名為“tkds30xx”(ni ivi)指向Tek的"TekScope.dll" ivi驅動,不成功。
1. 关于Config Store File(IVI配置文件)和MAX
建设使用MAX来配置Config Store File:MAX提供了图形界面,配置起来安全方便。
当然除了使用MAX,你也可以通过调用函数来配置Config Store File。IVI Configuration Server 提供了一系列访问Config Store File 的接口函数(包含C的接口和COM的接口)。具体的接口信息参见规范IVI-3.5(http://www.ivifoundation.org/specifications/default.aspx)。
为了使用这些接口函数,你需要先安装IVI Shared Components (http://www.ivifoundation.org/shared_components/Default.aspx)。当然你也可以只安装NI公司的IVI Compliance Package(简称ICP),ICP(http://joule.ni.com/nidu/cds/view/p/id/1095/lang/en)包含了IVI Shared Components,IVI Class Drivers,IVI Engine等。
2. 关于Interchangeability(可互换性)
为了实现可互换性,还需要有IVI Class Driver这一层。你可以安装NI公司的IVI Compliance Package(http://joule.ni.com/nidu/cds/view/p/id/1095/lang/en),它包含了IVI Class Driver。
感謝樓上的回復,再請教:
1、http://www.ivifoundation.org/downloads/Architecture%20Specifications 找到例子。
2、 iviscope應是IVI Class Driver这一層吧?但NI tkds30xx所帶IVI例子用的語法是:checkErr( tkds30xx_InitWithOptions ("tkds30xx",.....);感覺還是Visa驅動呀,這樣怎個互換?
3、iviscope.InitializeWithOptions.IviScope_InitWithOptions("TCPIP::192.168.0.2::INSTR",...)
同樣用邏輯名可以初始化,不知為什麼?
4、IVI Class Driver的IVIScope調用Tek的TekScope.ll IVI-COM驅動不成功,是因為NI IVIEngine不支持Tek的IVI驅動?
如附件中的图所示,通常来说使用仪器驱动有两种方式:
1. 直接使用Specific Driver。tkds30xx驱动就是属于一个Specific Driver,通过checkErr( tkds30xx_InitWithOptions ("tkds30xx",.....);就属于直接使用Specific Driver。
2.使用ClassDriver。由于tkds30xx驱动是一个符合IVISCOPE规范的驱动,应用程序可以通过IviScope这个ClassDriver来间接调用tkds30xx驱动。通过IviScope_InitWithOptions(...)就是调用了Class Driver的函数。但要注意的是,在使用Class Driver前要通过MAX配置好Config Store File,包括Logical Name(逻辑名),Driver Session, 以及在Software Module中的DLL路径。在你的应用中出现调用不成功的原因有可能是Config Store File没有配置好。-:)
如何体现可互换性:在应用程序中调用Class Driver可以体现互换性。
举一个例子,假设2008年租用了Tek的示波器,Specific Driver是tkds30xx;2009年租用的却是Agilent的示波器,Specific Driver也改为Agilent的驱动。但由于应用程序中调用的是Class Driver,不管Specific Driver如何变化,我们只需要更改Config Store File (通过MAX配置),而应用程序不需要做任何修改就可以继续使用。
再謝!
大致疏通了.
1、IVI驅動分IVI-COM & IVI-C,如果用VB之類,用IVI-COM方便些。不知NI的DSO有IVI-COM驅動沒,如果我現用IVI-COM,還是不能與NI DSO互換?
2、ClassDriver -COM是IVI 基金會發布的,ClassDriver -C是NI發布的,是這樣嗎?
安裝ICP3.3選了COM 支持的Adapter, 應是IVI-C與IVI-COM互換的支持。也就是IVI-C Class function用IVI-Com驅動嗎?
http://digital.ni.com/public.nsf/allkb/5499F9DBD07522F686256F260066BA86?OpenDocument
MAX指向IVI-C specific drivers, 用IVI-C Class IviScope.InitializeWithOptions成功!
MAX指向IVI-COM specific drivers,用IVI-C Class IviScope.InitializeWithOptions錯誤:"The option string parameter contains an entry with an unknown option value”
這個:
lngStatusCode = IviScope.InitializeWithOptions.IviScope_InitWithOptions("tkds30xx", True, True, "Simulate=1,RangeCheck=1,QueryInstrStatus=1,Cache=1", mlngInstrSession(i))
你说得很对:IVI驱动分为IVI-C和IVI-COM两种。NI公司只开发IVI-C的驱动,并且提供了一些列的工具来支持IVI-C驱动(比如IVI Engine,以及集成与CVI中的IVI Driver Wizard,IVI Specific Driver Test Suite等等)。但为了方便IVI-COM的用户,NI也提供了COM Adapter,使得通过IVI C Class Driver可以调用IVI COM Specific Driver。
NI的官方网站免费提供了6000多种仪器的驱动程序(http://www.ni.com/devzone/idnet/zhs/),支持诸如LabVIEW,CVI, Visual Stdio等多种平台。
回到你的问题,在初始化时出现了"The option string parameter contains an entry with an unknown option value”的错误消息。我猜想对应的错误代码应该是IVI_ERROR_BAD_OPTION_VALUE (BFFA004C),这是IVI Foundation定义的错误代码。请确认你传入的Option String是否正确无误,你的Specific Driver是否支持Simulation等。