Hello again...

Back to looking at this problem. Have still been unable to get LabVIEW
to create a blank data buffer, pass this buffer address to the DLL and
then have the DLL return data from the hardware to this buffer
address. I have however been able to read data (two chars) at a time
from the hardware device until I have read the entire device's memory.
This is not the optimal solution and I would prefer if LabVIEW could
read the entire buffer in one Call Library Node VI call.

Also buried in the manufacturer's API detail was a brief note that
stated the DLL uses the "PASCAL calling convention". This I have been
using in the Call Library Node configuration i.e. par4 - using a
Pascal String Pointer.... but when I pass an empty buffer the DLL
returns with

Trawling through the Developer Zone once more yielded this question -
"Does Call Library Function convert LV strings to null-terminated
before calling the dll?" (search on this for more details). In the
LVWUtil32 library (NI FTP site), there is a handy VI called "Generate
String Buffer". This generates a blank string buffer which can then be
sent to the DLL.

Could it be possible that LabVIEW 7.0 is not prepending the length
correctly to the blank buffer string when using the Pascal String
Pointer? Is there any way to check what the Pascal String Pointer
value and contents are when it is executed in the Call Library Node
VI?

Here's the configuration I'm using for the DLL:

void hasp(unsigned long service, unsigned long seed, unsigned long
lptnum, unsigned long pass1, unsigned long pass2, unsigned long *Par1,
unsigned long *Par2, unsigned long *Par3, PStr Par4);


-Chroma

Reply via email to