IVI-COM verdor-specific common interface

I am in prototyping two IVI-COM instrument drivers
that are for similar two DC supply models. They both have a common extended functionality but it is beyond
the IviDCPwr class specification.
I am considering to implement them for each of
public instrument-specific interfeces, and at the
same time, implement with a hidden common interface
that is commonly used for both models with the
QueryInterface trick. The approach I am thinking
is similar way as IIviXXX interfaces.
Is it allowed by IVI-COM specification or is there
any recommended approach?
thanks,
Makoto

Makoto,
You can actually create a family driver for those DC Power Supply instruments. Essentially, you create one IVI-COM Specific Driver that supports multiple instruments.
Implementation details of any particular interface is not defined by the IVI Foundation for IVI-COM or IVI-C drivers, except where it pertains to overall IVI architecture. You can most certainly use common-code in your internal implementation.
Thanks,
--Bankim
Bankim Tejani
National Instruments

Similar Messages

  • IVI-com PowerMeter​: Getting to Channel and Measuremen​t interface and using FetchCwPow​er & FetchWavef​orm

    I need a bit of help for the proper usage of the Channel and Measurement interface of IVI-COM driver. I have a sucessfully used the Active-X Automation Open, then the intiate methods via the class browser. Also know that there is communication with the device as some various properties can be set, but Im a bit stuck on the correct way to wireup and use the Measurements on Channel. In C# the syntax is myMeter.Channels.Items["CH1"].Measurements.FetchCw​Power or FetchWaveform.
    Pretty sure the Channels interface down Wiring down to the Channel, then passing the name in a constant, then to Measurements. But the Blue IsValid input and output wire connection are throwing me off, and causing labview to bomb. Any basic help with or example vi using IVI-COM and iviPwrMeter and the Channel Measurements would be appreciated!!

    Are you trying to use the class driver or the instrument specific driver? For the class driver, is your IVI-COM driver listed in MAX?
    For an example of using the instrument specific driver, see http://www.ni.com/white-paper/4505/en/

  • 哪位仁兄有TDS3000 IVI-COM specific driver?

    Tek發布哪個好像是Tektronix 5000/5000B/5000BE, 6000/6000B, 7000/7000B and 70000 series ,隻有部分function可用在tds3000上,不知是不這樣?
    NI的TDS3000 IVI-C specific driver當然可用,用VB6.0的話,還是IVI-COM方便一些。
    謝謝,
    已解決!
    轉到解決方案。

    完全看不懂您要表達的東西。
    您的程式語言是?
    您打算控制的儀器型號是?
    您可以上太克的網站找找。
    由 Fatty 在 03-31-2009 09:20 PM
    上編輯的訊息

  • IVI-C vs. IVI-COM Drivers

    I have recently downloaded an IVI-C Instrument specific driver from NI's website. For my application, I need a COM layer to communicate with other software that I am developing. If the driver that I had found would have been an IVI-COM driver, all of my problems would have been solved. However, this not being the case, I need some direction. Would it be easier to take the IVI-C driver and create a wrapper on top of it that would be a COM layer? Or should I attempt to rewrite the driver as an IVI-COM driver. Keeping in mind that I have very little experience developing drivers, my first inclination is to use the driver as is, and create another layer. However, if someone has any more knowledge that they could add to this, please d
    o so. There must be an easy way to accomplish this, and it must have been done before. Any help is greatly appreciated.
    Attachments:
    tkawg5x0.c ‏249 KB

    Actually, I did some more research and it turns out that the IVI foundation does have a COM spec. However creating an IVI-COM driver is not a trival ask as I had mentioned before so I stand by what I said regarding creating a wrapper.
    I wanted to point out that National Instruments offers IVI ActiveX controls to provide a more Visual Basic-friendly programming interface than using standard instrument driver DLLs.
    These IVI ActiveX controls as well as VC++ wrappers for IVI classes come with Measurement Studio Full Development System (FDS). For more info, go to:
    http://www.ni.com/mstudio

  • ViClose session not called after Read operation Timeout in an IVI COM driver

    Hi everybody
    I have a small VI sample that is initializaing an IVI COM driver for an OPM instrument, set some parameters into the instrument then is doing a single Read power measurement. My Read operation receives a single parameter called MaxTimeout that user could change depending on his own interest. Inside the Read function I change temporarily the VISA query timeout to user timeout but at the end of Read operation the original VISA session timeout is reverted to its original value before Read operation was called. If the Read operation timeout is long enough for the Read operation to complete ( 100 ms or more) the VI is doing its job and when finished the viClose is called twice for DefaultHandler and for OpenHandler.
    If the Read operation timeout value decrease ( 50 ms) then Read operation could not be completed and a Read Operation Timeout error is thrown from inside this method. This error is then propagated trough Error path until the VI end in a Simple Error Handler. Now on my VI I close all open references to my driver interfaces but I don't know why VISA itself is not calling viClose on the DefaultHandler and OpenHandler as in the case when was no VI error. I could see all these diferences in my NI Spy window and I could post this if that could be of any help. Bear with me cause I am more a C, C++, VB programmer and much less of a LabVIEW programmer. BTW the Error Handling from LabVIEW looks a a little weird and the only sure thing is that I wired in Error In and Error Out path in all my VI calls. What kind of error handling should I perform on the Read method in order for VISA to close properly both OpenHandlers even if there is an error in my VI?
    Thansk
    sorinvalea

    So viClose is not called by VISA after an error takes place in a VI that is calling some operations on an IVI COM driver.
    I discovered that all VI sessions opened trough VI that encountered a timeout error in Read operation and that were not properly closed after VI completed are in fact viClose by the LabView itself when I am closing LabVIEW application.
    So these left over open vi sessions are kept aside by LabVIEW until it closes itself and then clean them one by one by calling viClose on them....

  • Agilent's IVI-COM Drivers

    Can TestStand call Agilent's IVI-COM Drivers and how to configurate them with NI MAX?
    "Only a life lived in the service to others is worth living..." - Albert Einstein

    Estonia,
    At the very least, Agilent probably provides a dll interface to calling their driver. You could call those dll functions from TestStand using the C/C++ DLL adapter (or the Flexible DLL Adapter if you are using TestStand 2.0.1 or below). If they provide an ActiveX or COM interface (which sounds highly likely considering the name of IVI-COM) then you can use the TestStand ActiveX/COM adapter to call into these drivers.
    NI MAX is the NI Measurement and Automation explorer. Because these drivers are not National Instrument's drivers there will not be an interface for them to be used within NI MAX.
    Let us know if you have any other questions.
    Regards,
    Shannon R.
    Applications Engineer
    National Instruments

  • IVI-COM Vi's or property nodes?

    I'm fairly new to IVI-COM instrument drivers and have up until now been using the supplied IVI-COM Vi's for the instrument I'm doing a driver for. However I'm finding that more and more it's making sense to just use a property node to set things such as Start Frequency etc so I'm thinking I might just use them for everything from now on.
    All I really want to know is are there any major issues with doing this - and is it something is recommended to be done - just really want reassurance that if I take the route of using property nodes I won't get bitten on the arse by something that I don't know about.
    Any thoughts happily received,
    David Clark
    CLA | CTA
    CLA Design Ltd
    Hampshire, England

    Hi David,
    I'm guessing that you've got a bunch of LabVIEW vi's from the vendor - that are basically wrappered IVI-COM calls? (If you can tell me where to download the driver from I can look in more detail). The low level IVI-COM calls will just use ActiveX (so property nodes and invoke nodes) to access the COM object.
    Whether you use the wrappered vi's or the lower level calls is up to you, it will depend on the level of flexibility that you require. For some configuration settings for the instrument there might not be a ready built vi - so you may have to use the lower level calls to acheive it.   (A bit like the usual plug and play instrument drivers, versus low level calls directly using VISA - which may or may not give you an idea - depending on whether you've used them!).
    Take a look at the following tutorial which might give you some more pointers:
    http://zone.ni.com/devzone/cda/tut/p/id/4505
    I guess one point to bear in mind is that the vendor can at any time change the ActiveX methods and properties with a new release of the driver (a bit like Microsoft have done in the past with things like media player and office) which may leave code you've generated with broken wires, if you are using their wrappered vi's then its possible that they'll keep the wrapper and change whats inside so that its seamless to the end user. - (Its also possible that they could update the automation servers version number which would result in a non working vi - but may not result in broken wires, working with the vendors LabVIEW API should solve these issues - since they will have re-linked them specifically to each version)
    Another factor that should help you make up your mind is how well documented each of the options are - they may have put more time into the friendly end user vi's than they have to the API?
    But if you're generating your own driver, then it will probably be more useful to you to strip away some of the abstraction to get more efficient results.
    I hope this helps - perhaps other members of the NI community can give you their experiences
    Hannah
    NIUK & Ireland

  • IVI COM driver access thru Teststand

    Hi,
    I need to access an IVI COM driver (Sorenson DCPS) from Teststand. The driver works fine as a standalone application but when i call the initialize() method of COM from Teststand i get the following error:
    An error occurred calling 'Initialize' in 'IIviDCPwr' of 'IVI SorensenDC 1.0 Type Library'
    SorensenDC: Unknown resource.
    Source: SorensenDC.SorensenDC.1
    Kindly help me out with this!!
    Thanks,
    Priya.

    Hi, Priya,
    Have you looked at this knowledgebase document. It looks like you need to create a session before calling the initialize function. This could be the cause of the problem.
    When you say it works fine as a standalone application, what do you
    mean? Since the driver is an activeX server, do you mean you
    successfully use the server in another programming environment? It'd be nice if you can verify that the driver is working before we troubleshoot TestStand.
    Also, are you communicating with your device over GPIB, Serial, or some other interface. It looks like the driver does not understand what "SorensenDC" is. Are you sure it's the correct resource name. Typically it's of the format "ASRL10:INSTR" unless you gave an alias to it. So please make sure you are passing the correct resource name.
    Regards,
    Song D
    Regards,
    Song Du
    Systems Software
    National Instruments R&D

  • IVI-COM Driver

    I have recently prototyped an IVI-COM class-compliant specific driver for an instrument. This is still a BETA version but I am going to contribute the driver as an IVI-compliant driver when the development has completed. I would like to know how we can take compliance test and how we can contribute the driver. I previously contacted IVI foundation but no response.

    Makoto,
    We would be happy to post your contributed driver to the IDNet website in either its beta or completed form. You can submit the driver by completing the submission form on IDNet.
    As stated on the IDNet Website, our test tools are currently configured for drivers written in LabWindows/CVI that come with Function Panels (i.e. IVI-C). The only way for us to test your IVI-COM driver is if you could provide an IVI-C wrapper for it.
    Finally, who did you contact at the IVI Foundation? The best working group to contact about IVI-COM compliance is the COM Working Group
    . I would also suggest that you join the IVI Foundation, so you gain access to shared components and can shape future instrument driver classes.
    Thanks,
    Bankim Tejani
    National Instruments

  • Using a specific network interface

    Hello, I would like to know how I can force Mac OS X to use a specific network interface while connecting to my mac mini (from the iMac):
    I'm connected to the internet (I mean the local network) using the airport, and I connected my iMac with the mac mini using an ethernet cable (because I want to transfer files faster, and I don't want to reboot my mini in target disk mode), but when I connect to the mini (using the "share" feature) it seems to use the airport connection. Of course I could disable the airport interface to force it to use the ethernet one (and it works) but I don't want to...
    So, how can I force a specific interface? I don't mind using a command line command to mount it initially btw.
    Thanks

    Hello, 
    Try using a different IP address range to put each interface in a different subnet. For example use 10.0.0.x and 255.255.255.0 for the Ethernet connection and 192.18.2.x and 255.255.255.0 for the Airport.
    mrtotes

  • I need IVI - COM example, can helpOr where can I find

    Very hope to get IVI - COM example, requests for help~~~~

    http://ivifoundation.org/downloads/IVI%20GSG%20201​2/IVI%20GSG%20C++%20MAR2012.pdf
    Jeff

  • I am using the NI application note "Calling IVI-COM drivers from LabVIEW" I created an Automation Open and an Invoke Node, after wiring

    the 2, the AN asked to right click the Invoke Node(this is step9) and choose initialize. However there is no intialize option on the pop up menu. Anything am I doing wrong? I am using Labview6 and I did add the "enableCustomInterface=True" in the INI-fileThank you for your help.
    T Tall

    the 2, the AN asked to right click the Invoke Node(this is step9) and choose initialize. However there is no intialize option on the pop up menu. Anything am I doing wrong? I am using Labview6 and I did add the "enableCustomInterface=True" in the INI-fileT Tall,
    What's the number of the application note "Calling IVI-COM drivers from LabVIEW"? I'm unable to find what you're looking at.
    Thanks,
    --Bankim

  • NI IVI Soft front panel compatibility with IVI-COM drivers

    Does IVI soft front panels support IVI-COM instruments drivers ?
    For example, I would like to use IVI-COM driver for Tektronix TDS5000 with TestStand...
    Jean-Louis SCHRICKE
    ├ CTA - Certified TestStand Architect (2008 & 2010 & 2014)
    ├ CTD - Certified TestStand Developer (2004 & 2007)
    └ CLD - Certified LabVIEW Developer (2003 & 2005)

    The IVI soft front panels that ship with the NI IVI Driver Toolset do not support calling IVI-COM drivers. The soft front panels support IVI-C drivers. On Instrument Driver Network there are IVI-C drivers for other Tektronix scopes.

  • Com/bea/xbean/common/ConcurrentReaderHashMap@0x2a9601f1b0[fat lock]

    "[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'" id=77 idx=0x11c tid=2128 prio=5 alive, in native, blocked, daemon      -- Blocked trying to get lock: com/bea/xbean/common/ConcurrentReaderHashMap@0x2a9601f1b0[fat lock]      at
    jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)      at
    jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1610)[optimized]      at
    jrockit/vm/Locks.lockFat(Locks.java:1710)[optimized]      at
    jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1274)[optimized]      at com/bea/xbean/common/ConcurrentReaderHashMap.clone(ConcurrentReaderHashMap.java:869)[optimized]      at com/bea/staxb/runtime/internal/RuntimeBindingTypeTable.createTable(RuntimeBindingTypeTable.java:79)[inlined]      at com/bea/staxb/runtime/internal/BindingContextImpl.<init>(BindingContextImpl.java:49)[inlined]      at com/bea/staxb/runtime/internal/BindingContextFactoryImpl.createBindingContext(BindingContextFactoryImpl.java:70)[inlined]      at weblogic/wsee/bind/runtime/internal/RuntimeBindingsImpl.<init>(RuntimeBindingsImpl.java:98)[inlined]      at weblogic/wsee/bind/runtime/internal/RuntimeBindingsBuilderImpl.createRuntimeBindings(RuntimeBindingsBuilderImpl.java:102)[optimized]      at weblogic/wsee/bind/runtime/internal/GenericRuntimeBindingsImpl.<init>(GenericRuntimeBindingsImpl.java:33)[inlined]      at com/bea/wsrp/wsdl/WsdlInfoImpl.getBaseWsPort(WsdlInfoImpl.java:411)[optimized]      at com/bea/wsrp/consumer/resource/DefaultResourceConnectionFilter.getMarkupPortUrl(DefaultResourceConnectionFilter.java:82)[inlined]      at com/bea/wsrp/consumer/resource/DefaultResourceConnectionFilter.allowedURL(DefaultResourceConnectionFilter.java:37)[optimized]      at com/bea/wsrp/consumer/resource/ResourceProxyServlet.isUrlAllowed(ResourceProxyServlet.java:93)[optimized]      at com/bea/netuix/servlets/manager/AbstractResourceProxyServlet.internalService(AbstractResourceProxyServlet.java:190)[optimized]      at com/bea/netuix/servlets/manager/AbstractResourceProxyServlet.doPost(AbstractResourceProxyServlet.java:141)[optimized]      at javax/servlet/http/HttpServlet.service(HttpServlet.java:727)[optimized]      at
    javax/servlet/http/HttpServlet.service(HttpServlet.java:820)[optimized]      at weblogic/servlet/internal/StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)[optimized]      at weblogic/servlet/internal/StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)[inlined]      at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:283)[optimized]      at weblogic/servlet/internal/TailFilter.doFilter(TailFilter.java:26)[optimized]      at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]      at com/myapp/appname/modulename/filter/MyAppFilter.doFilter(MyAppFilter.java:100)[optimized]      at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]      at com/bea/portal/tools/servlet/http/HttpContextFilter.doFilter(HttpContextFilter.java:60)[optimized]      at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]      at com/bea/p13n/servlets/PortalServletFilter.doFilter(PortalServletFilter.java:336)[optimized]      at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]      at com/ntrs/ngp/framework/common/filters/MethodBlockingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V(Unknown Source)[optimized]      at
    weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[inlined]      at weblogic/servlet/internal/WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3393)[optimized]      at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)[optimized]      at weblogic/security/service/SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(Unknown Source)[inlined]      at weblogic/servlet/internal/WebAppServletContext.securedExecute(WebAppServletContext.java:2140)[inlined]      at weblogic/servlet/internal/WebAppServletContext.execute(WebAppServletContext.java:2046)[optimized]      at weblogic/servlet/internal/ServletRequestImpl.run(ServletRequestImpl.java:1366)[optimized]      at weblogic/work/ExecuteThread.execute(ExecuteThread.java:200)[optimized]      at
    weblogic/work/ExecuteThread.run(ExecuteThread.java:172)      at
    jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)      -- end of trace

    Anyone knows why this thread is blocked on ConcurrentReaderHashMap?

  • Accessing IVI-COM Driver through TestStand ActiveX Steps

    Hello
    I need to control a Agilent 6691 PowerSupply with TestStand. For this PowerSupply only an IVI-COM Driver exists, no IVI-C Driver. I tried to access it with the ActiveX Adapter Step. But when I try to create a IAgilent66xx object it produces an error without an meaningfull error message.
    Is there any way to get this working ?
    Thanks
    Olli

    Hi !,
    - I am working on similar need (using Tek scope IVI-COM driver) and currently facing some problems, I was looking for help and saw this thread of discussion almost two year old. Is there any solution to this problem that is now found within two years ?
    - I am trying to use IVI-COM driver for scope using ActiveX/COM adapter in TestStand (Ver. 3.5) and when I try to execute sequence I get message as ""Attach to Active Object" in automation call failed. Operation unavailable". Attached is sequence file I am working on.
    Attachments:
    Tek_scopeIVI.seq ‏21 KB

Maybe you are looking for

  • GL Accounts for MM

    Generally which GL accounts are required while defining valuation classes other than Material Type GL accounts?

  • Interactive button layer orders

    when i create a button in indesign, it ignores the layer information i've specified, instead moving the newest button to the top layer no matter where it resides in the layer pallet. it also floats it on top of all other page data - master or individ

  • JMS in Enterprise with multiple VM's fail

    Hi Im running 9.0.3 enterprise on Windows 2000. I have a servlet that dumps messages into a JMS queue which invokes a MDB. The Server is running 2 VM's in the same island. If I chooses the restart option with enterprise manager interface, all works w

  • Why concatenate statement suppressing spaces !!

    <i>Hello Friends,               I like give some spaces in a concatenate statement, but it is suppresing the spaces. for ex: <b>concatenate 'sundar' '      ' 'g' into name</b>. but the name contains <b>'sundarg'</b> only. Thank you for your valuable

  • About over delivery process

    Hi, experts I would like to know how to deal with over delivery to customer in sap as standard process?