ni.com is currently undergoing scheduled maintenance.

Some services may be unavailable at this time. Please contact us for help or try again later.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Load bluehill 3 API into LabVIEW

Hello,

 

I am trying to use LabVIEW 2015 to interface with a Instron Tensile Tester 5969 via the Bluehill 3 API. Based on what I understand from the Bluehill API help, I am using LabVIEW's .NET functions. What I am aiming to do is have LabView start taking data with an extensometer when the Bluehill test begins so that the data is synchronized. I think I have the constructor node organized properly, but I generate a .NET exception, which I understand is not a labVIEW issue, but rather an external issue. I was hoping that someone with more experience with LabVIEW's .NET could look at the code and see if I am just missing something obvious which would result in the .NET exception.

 

The .NET Exception: Invoke Node System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 Inner Exception: System.Exception: Bluehill is not currently running or you are not connected <append><b>System.Exception</b> in Main Vi.vi

 

I don't understand why I am getting this error, since I have the Bluehill software running.

 

0 Kudos
Message 1 of 19
(6,983 Views)

Hello, at first glance over your code, it looks like it should be good. I don't have the API so I was not able to run the code and reproduce your error. Based on the exception, it looks like Bluehill may not be running or connected. Do you have a method of double checking this?

 

Andrew M.

0 Kudos
Message 2 of 19
(6,909 Views)

Hello, unfortunately, I do not have a method to check that bluehill is running, at least, not that I know of. My guess is that somewhere along the line labVIEW doesn't actually connect to the API, since I can be running a test with bluehill, but labVIEW still has the error. But again, I don't know how to check this.

Thanks

Luke J

0 Kudos
Message 3 of 19
(6,903 Views)

Hi there, have you been able to look at any LabVIEW examples with Bluehill and compare them to your code? I am able to see an example for Bluehill 2 API and connecting to LabVIEW. Additionally, it appears as though if you go to Start>All Programs>Instron>Help>Bluehill Help and click on API help, there may be examples for LabVIEW. I can't see the Bluehill 3 API examples myself, but there may be a LabVIEW example in there. If not, you could try comparing to a Bluehill 2 API LabVIEW example and see if you can find anything.

 

The link to a Bluehill 2 API LabVIEW example is here: http://dl.dropbox.com/u/16819834/BH_LabView.zip

 

The link describing this in general is here: http://bluehillusercommunity.blogspot.com/2010/05/api-where-are-some-examples.html

 

Thanks,

 

Andrew M

0 Kudos
Message 4 of 19
(6,899 Views)

Hello

I have looked at the link, but I haven't been able to translate any information over that helps in my situation. Also, based on the VI in that link, Bluehill 2 uses ActiveX, where Bluehill 3 uses .NET, in my understanding. I have tried building some code for Bluehill 3 with ActiveX, but that hasn't got me anywhere.

Also, let me add the Bluehill 3 API help. I am basing a lot of this on this document, so I figure it might be helpful.

Thanks

Luke J

0 Kudos
Message 5 of 19
(6,892 Views)

I also ran a System Debugger (as noted in another .NET post on the forums) https://technet.microsoft.com/en-us/sysinternals/debugview.aspx

And this is the error log I received:

00000001 0.00000000 [8340] Created new AppDomain: Project1.lvproj for Reflection  
00000002 5.48525429 [8340] Created new AppDomain: Project1.lvproj for Run  
00000003 5.65337753 [8340] System.NullReferenceException: Object reference not set to an instance of an object.  
00000004 5.65337753 [8340]    at NationalInstruments.LabVIEW.CrossDomainServer.DNSetAssemblyResolvePaths(LVAssembly** lvAssemblyArray, UInt32 size)  
00000005 5.72247314 [8340] DNError:  (1172). System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 
00000006 5.72247314 [8340]    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)  
00000007 5.72247314 [8340]    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)  
00000008 5.72247314 [8340]    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)  
00000009 5.72247314 [8340]    at NationalInstruments.LabVIEW.DNRuntime.InvokeMethod(Int32 invokeType, Type type, Object target, String methodName, Type[] parameterTypes, Int32[] parameterFlags, Object[] parameterIds, IntPtr tdArr) 
00000010 5.72247314 [8340]  Inner Exception: System.Exception: Bluehill is not currently running or you are not connected 
00000011 5.72247314 [8340]    at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object Description, Object HelpFile, Object HelpContext)  
00000012 5.72247314 [8340]    at Instron.Bluehill.API.APIHelper.RaiseException(Int32 lErrorNumber, String strErrorSource)  
00000013 5.72247314 [8340]    at Instron.Bluehill.API.Sample.startTest() 
00000014 5.72247314 [8340]   
00000015 5.72461033 [8340] DNError: Error calling method Instron.Bluehill.API.IAPIClient.SetAPIReference (1172). System.ArgumentNullException: Key cannot be null.  
00000016 5.72461033 [8340] Parameter name: key 
00000017 5.72461033 [8340]    at System.Collections.Hashtable.get_Item(Object key)  
00000018 5.72461033 [8340]    at NationalInstruments.LabVIEW.SyncInvokeTable.LookupControl(Object key)  
00000019 5.72461033 [8340]    at NationalInstruments.LabVIEW.DNRuntime.InvokeMethod(Int32 invokeType, Type type, Object target, String methodName, Type[] parameterTypes, Int32[] parameterFlags, Object[] parameterIds, IntPtr tdArr) 
00000020 5.72461033 [8340]   
00000021 5.72492552 [8340] DNError: Error accessing property Instron.Bluehill.API.Security.UserName (1172). System.ArgumentNullException: Key cannot be null.  
00000022 5.72492552 [8340] Parameter name: key 
00000023 5.72492552 [8340]    at System.Collections.Hashtable.get_Item(Object key)  
00000024 5.72492552 [8340]    at NationalInstruments.LabVIEW.SyncInvokeTable.LookupControl(Object key)  
00000025 5.72492552 [8340]    at NationalInstruments.LabVIEW.DNRuntime.InvokeProperty(Int32 invokeType, Type type, Object objectId, String propertyName, Type propertyType, Boolean getProperty, Object& pParameter, IntPtr tdParam) 
00000026 5.72492552 [8340]   
00000027 5.72673035 [8340] DNError:  (1172). System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 
00000028 5.72673035 [8340]    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)  
00000029 5.72673035 [8340]    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)  
00000030 5.72673035 [8340]    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)  
00000031 5.72673035 [8340]    at NationalInstruments.LabVIEW.DNRuntime.InvokeMethod(Int32 invokeType, Type type, Object target, String methodName, Type[] parameterTypes, Int32[] parameterFlags, Object[] parameterIds, IntPtr tdArr) 
00000032 5.72673035 [8340]  Inner Exception: System.Exception: Bluehill is not currently running or you are not connected 
00000033 5.72673035 [8340]    at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object Description, Object HelpFile, Object HelpContext)  
00000034 5.72673035 [8340]    at Instron.Bluehill.API.APIHelper.RaiseException(Int32 lErrorNumber, String strErrorSource)  
00000035 5.72673035 [8340]    at Instron.Bluehill.API.BluehillAPI.openMethod(String MethodFile) 
00000036 5.72673035 [8340]

0 Kudos
Message 6 of 19
(6,890 Views)

Ok, I have been fussing around with my problem and I think I may have pinned down the part of problem. When I hover over the IAPIClient property node, some text pops up briefly. It reads, "BluehillAPI, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null". Now, I am no expert, but I know that the API uses 4.0 .NET, not 0.0. I was able to find some info on the null bit as well. I am not sure how to get the Key to not be null yet. (I included the picture for illustration, since I don't think this was in the initial project)

0 Kudos
Message 7 of 19
(6,875 Views)

Untitled.png

That's your problem.

You can't use a "NULL" constant.

 

George Zou
0 Kudos
Message 8 of 19
(6,868 Views)

Thanks for the verification. It is good to actually know what the problem is. I am at bit of a loss as to how to actually deal with it. Is this a problem with how LabVIEW is handling the key, or is the problem coming from the API instead?

 

Thanks

Luke J

0 Kudos
Message 9 of 19
(6,857 Views)

To fix it, right click on the constant, change it to a control.

On the front panel, right click on the control, and insert the right object from the .net assembly.

 

 

George Zou
0 Kudos
Message 10 of 19
(6,853 Views)