Usando un Call Library Function Node para llamar una función DLL la cual devuelve un String que incluye caracteres tipo Null



Software Primario:
Versión de Software Primario: 7.1
Versión de Software Primario Corregido: 7.1
Software Secundario: N/A

Problema:
Mi Call Library Function Node no devuelve el String completo cuando llama una función DLL.


Solución:

Puede que su función DLL esté devolviendo un String que contiene caracteres de tipo Null, Para devolver un String que incluye caracteres Null, se debe tratar al String como un arreglo de bytes. Una forma de lograr esto, se describe a continuación:

 

1.    Inicialice un arreglo mediante la función Initialize Array. Conecte una constante numérica estableciendo la representación U8 en la entrada element y establezca el tamaño del arreglo (dimension size) para que contenga, al menos, el número total de caracteres en el String.

2.    Establezca el arreglo que inicializó previamente, como parámetro de entrada al Call Library Function Node.

3.    Convierta la salida del nodo, de un arreglo de bytes a un String de nuevo, usando la función Byte Array to String.

 

A continuación se adjuntan dos VI’s de ejemplo. Ambos leen la entrada de nationalinstruments.dll la cual devuelve un String de 14 caracteres “Labview/0Rocks/0” donde /0 es un caracter Null que existe entre dos palabras y al final del String. El primer ejemplo (InvalidDLLReadNullBytes.vi) trata de leer el String sin inicializar el tipo de dato a un arreglo de bytes y lo hace sin éxito. El segundo ejemplo (ValidDLLReadNullBytes.vi) sigue los pasos antes descritos y devuelve, existosamente, el String completo de la dll.

 



Ligas Relacionadas:

Archivos Adjuntos:


nationalinstruments.dll - nationalinstruments.dllValidDLLReadNullBytes.vi - ValidDLLReadNullBytes.vi
ATTPIRGZ - ATTPIRGZ
InvalidDLLReadNullBytes.vi - InvalidDLLReadNullBytes.vi
ATTKV7FL - ATTKV7FL



Día del Reporte: 06/14/2004
Última Actualización: 06/09/2009
Identificación del Documento: 3AD7S2XR