LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

"iviDCpwr_close" doesn't work at KIKUSUI PIA4830 controller.

"iviDCpwr_close" doesn't work at KIKUSUI PIA4830 power supply controller. If I use the device driver only, that is working properly, but if I want to drive the controller via IVI layer it stop.
0 Kudos
Message 1 of 3
(3,108 Views)
I believe you are using "ki4800" IVI-C driver (strictly an IVI-C wrapper for Kikusui4800 IVI-COM) through the NI IviDCPwr class driver.  The ki4800_close() function in the ki4800_32.DLL internally invokes IviSession_Dispose() function (exported from IviCShared.DLL) and its call is apparently causing the problem.
 
What I have confirmed are:
1) When using the ki4800 IVI-C driver without class drivers, everything works fine. 
2) When using the ki4800 IVI-C driver through IviDCPwr class driver, invoking IviSession_Dispose() from inside ki4800_close() just hangs up and never returns. 
 
I am still investigating what is happening when using IviDCPwr class driver, but I can't currently figure out why IviSession_Dispose() function hangs up without return.  Does anybody know why this function hangs up instead of returnning an error?
 
My test environment is:
WinXP SP2
CVI 8.0
NI-VISA 3.4.1
GPIB-USB-B with NI-488.2M VER2.2
NI IVI Compliance Package 2.3
latest IVI Shared Components
 
Makoto
Kikusui Electronics Corp. / JAPAN
 
0 Kudos
Message 2 of 3
(3,087 Views)
There is an alternative approach for using KIKUSUI PIA4810/4830 driver through the NI IviDCPwr class driver and you can avoid the problem.  The 4810/4830 driver is actually an IVI-COM driver (Kikusui4800.DLL) with IviDCPwr class supported.  Fortunately NI's class drivers have associated "COM Adapter" addition DLLs, which allows you to directly use IVI-COM class-compliant drivers through the NI IVI-C class drivers without specific IVI-C wrapper drivers.
 
To use it:
1) Download IviClassCOMAdapter.zip that Michael C provided on this discussion forum, then extract all the DLLs into /ProgramFiles/IVI/BIN directory.
2) Change IVI configuration by using NI-MAX or any IVI configuration tool, so that your virtual instrument (Logical Name) does associate with the Software Module "Kikusui4800" instead of "ki4800".  (Kikusui4800 is an IVI-COM driver module that does not use ki4800_32.DLL). 
3) Now your CVI application will access the IVI-COM driver without changing app's source codes.  Of course the ki4800_close() problem can be bypassed because you no longer use ki4800_32.DLL.
 
Regards,
Makoto
Kikusui Electronics Corp. / JAPAN

このメッセージは 12-26-2005 11:46 AMに Makoto が編集しています。

0 Kudos
Message 3 of 3
(3,085 Views)