es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Codesys 3: ¿Cómo obtener la dirección y el tamaño de una variable a partir de una cadena que contiene el nombre del símbolo de dicha variable?

Quiero tomar una cadena que contenga el nombre del símbolo de una variable y de alguna manera obtener la dirección y el tamaño de la variable con ese nombre de símbolo.

MyDINT:= 5;
MySymbolName:= <code>MyDINT</code>;

VariableInfo:= SomeFunctionImLookingFor(MySymbolName);
MyDINTPointer ACCESS VariableInfo.Address;
MyDINTSize:= VariableInfo.Length;

NOTA: Esto es diferente de __VARINFO(MyDINT); porque pasaría el nombre del símbolo MyDINT como una cadena.

EDICIÓN: Obviamente, este no es mi caso de uso, solo es el ejemplo más simple posible. Me resulta curioso que haya una función que devuelva un nombre de símbolo como una cadena, pero no una función que haga lo contrario.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la dirección y el tamaño de una variable con un nombre de símbolo que está almacenado como una cadena, necesitarías usar una función o método que sea capaz de realizar una búsqueda basada en el nombre del símbolo. Esto se debe a que los nombres de los símbolos no están directamente relacionados con la dirección de memoria o el tamaño de una variable, sino que sirven como referencia o etiqueta para la variable.

    Un posible enfoque sería utilizar una función o biblioteca incorporada que admita este tipo de funcionalidad. Dependiendo del lenguaje de programación o entorno con el que estés trabajando, puede haber diferentes opciones disponibles. Por ejemplo, en Codesys podrías usar el método SysSymbolTable.Lookup para obtener un objeto SysSymbolElement que representa la variable con el nombre de símbolo especificado. Este objeto debe contener información como el tipo de dato, la dirección de la variable y el tamaño.

    Una vez que hayas obtenido el objeto SysSymbolElement para la variable, puedes extraer la información de la dirección y el tamaño y usarla según sea necesario. Por ejemplo, podrías crear una variable puntero que haga referencia a la ubicación de memoria de la variable original, o podrías realizar alguna otra operación que requiera el tamaño de la variable.

    En general, el enfoque que adoptes dependerá de los requisitos específicos de tu aplicación y de las herramientas y bibliotecas disponibles para ti como experto en tecnología de la información. Sin embargo, mediante el uso de una combinación de búsqueda de nombres de símbolos y técnicas de direccionamiento de memoria, deberías poder lograr la funcionalidad deseada.

Comments are closed.