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.
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 objetoSysSymbolElement
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.