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.
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 |
|
identifica un controlador |
|
modelo de dispositivo |
|
para LMCx00C o LMCx01C, respectivamente |
|
versión del dispositivo |
|
versión de firmware del controlador |
|
nombre del módulo |
|
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")
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()
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()
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()