Convertir dispositivo

Descripción general

La conversión de dispositivos dentro del proyecto puede ser un procedimiento complejo. Esta API simplifica el proceso de conversión y permite evitar errores.

Uso del objeto DeviceID

La API de conversión utiliza el objeto DeviceID, que identifica un dispositivo o un módulo de dispositivo con una versión específica. El DeviceID se crea del modo siguiente:

<tipo de dispositivo> <modelo de dispositivo> <versión del dispositivo> <nombre del módulo>

Elemento

Ejemplo

Descripción

tipo de dispositivo

4096

identifica un controlador

modelo de dispositivo

1003 0082 o 1003 009D

para LMCx00C o LMCx01C, respectivamente

versión del dispositivo

1.50.0.4

versión de firmware del controlador

nombre del módulo

LXM52

módulo del dispositivo de destino

La API de conversión acepta DeviceID como instancia de objeto o como parámetro único. Esto permite utilizar un DeviceID que contenga todos los elementos mencionados en la tabla anterior o transmitir cada elemento como un solo parámetro.

En el ejemplo siguiente se muestra cómo crear un DeviceID para un controlador LMCx00C con la versión de firmware 1.50.0.4:

Lmcx00c = DeviceID(4096, "1003 0082", "1.50.0.4")

Cómo probar si un dispositivo se puede convertir

El script siguiente permite verificar si se puede realizar una conversión a una versión determinada antes de convertir un dispositivo.

from __future__ import print_function
 
def main():
    # Set the project as primary project
    proj = projects.primary
    controller = proj.find('LMC_PacDrive', True)[0]
    drives = controller.find('DRV_Lexium62', True)
 
    if len(drives) == 0:
        print("Expected drive object not found")
        return
 
    drive = drives[0]
 
    # test if controller can be converted using DeviceID
    x01c = DeviceID(4096, "1003 009D", "1.53.5.4")
    if controller.can_convert(x01c):
        print("Conversion to LMCx01C possible")
 
    # test if drive can be converted using Parameters and module id
    if drive.can_convert(4096, "1003 0082", "1.53.5.4", "LXM52"):
        print("Conversion to LXM52 possible")
 
 
if not projects.primary:
    print("No project open.")
else:
    main()

Obtención de destinos de conversión alternativos

La API proporciona una llamada que recupera los destinos de conversión posibles para un dispositivo determinado. Devuelve el DeviceID de cada destino.

from __future__ import print_function
 
#help function to print the delivered device ids
def deviceid_to_string(devId):
    mystr = "ID: {0.id} Type: {0.type} Version: {0.version}".format(devId)
 
    if hasattr(devId, 'module_id') and devId.module_id is not None:
        mystr += " ModuleID: {0.module_id}".format(devId)
        return mystr
 
 
def main():
    
    # Set the project as primary project
    proj = projects.primary
 
    controller = proj.find('LMC_PacDrive', True)[0]
    alternativeControllers = controller.get_alternative_devices()
 
    print("ALTERNATIVE DEVICES FOR LMC")
    for id in alternativeControllers:
        print(deviceid_to_string(id))
 
    drive = proj.find('DRV_Lexium62', True)[0]
    alternativeDrives = drive.get_alternative_devices()
 
    print("ALTERNATIVE DEVICES FOR DRIVE")
    for id in alternativeDrives:
        print(deviceid_to_string(id))
 
    print("Test complete. Please check the script output window")
 
 
 
if not projects.primary:
    print("No project open.")
else:
    main()

Conversión del dispositivo

El proceso de convertir el dispositivo es sencillo, ya que la única acción que se requiere es llamar al método de conversión.

from __future__ import print_function
 
def main():
    proj = projects.primary
    controller = proj.find('LMC_PacDrive', True)[0]
    drive = proj.find('DRV_Lexium62', True)[0]
 
    # converting the controller
    controller.convert(4096, "1003 009D", "1.53.5.4")
    # converting the drive
    drive.convert(DeviceID(4096, "1003 0082", "1.53.5.4"), "LXM52")
 
 
if not projects.primary:
    print("No project open.")
else:
    main()