Python Device Access einrichten für mehrere Versionen von corbaifc

Motivation

Im Python-Interface für Gerätezugriffe (devacc) werden über die Klasse devacc.Device Proxy-Objekte der Front-End Geräte angelegt. Diese devacc.Device -Objekte behandeln intern die Eigenschaften der CORBA-Schnittstelle der jeweiligen Front-End Geräte. Somit muss die devacc.Device an die jeweilige CORBA Zugriffsschnittstelle angepasst sein.

Mit der Einführung der Versionierung der CORBA-Zugriffsschnittstelle kann nun auf Client-Seite erkannt werden, welche Schnittstelle die Front-End Geräte implementieren. Damit ist es nun möglich, mehrere Schnittstellen parallel zu unterstützen.

Mit der im Folgenden beschriebene Einrichtung unterstützt devacc mehrere CORBA-Schnittstellen. Die Auswahl der richtigen Schnittstelle ist transparent für den Benutzer. Derzeit (Aug. 2008) sind das CorbaInterface und CorbaInterface01.

Implementation

Das Modul devacc ist ausgelegt auf eine Haupt-Schnittstelle. Derzeit, also Aug. 2008, ist das =nop>Interface=für Release 09. Mit der normalen Installation wird nur diese Schnittstelle unterstützt.

Wenn die entsprechenden internen Module zusätzlich bereitgestellt werden (siehe unten), wird daneben auch eine zweite Schnittstelle unterstützt. Das ist derzeit, also Aug. 2008, nterface01 ab Release 10.

Die Bezüge zur CORBA Schnittstelle wurden im Konstruktor der Klasse devacc.Device. Bei der Instatiierung eines Objektes dieser Klasse werden nacheinander die Haupt-Schnittstelle und, wenn vorhanden, die zweite Schnittstelle durchprobiert. Dar Bezug zur jeweiligen CORBA-Schnittstelle wird sich im Objekt gemerkt, damit sie gegebenenfalls spezifisch behandelt werden kann.

Einrichtung

Um die zweite Schnittstelle (also CorbaInterface01) zusätzlich verwenden zu können, muss man:
  • das idl-File besorgen (corbaifc.idl, für die Version 01)
  • das File umbenennen, z.B. corbaifc.idl -> corbaifc-01.idl
  • das umbenannte IDL-File übersetzen,
  $ omniidl -b python corbaifc-01.idl
  • und den generierten Code in die Python-Directory schaffen (nach /usr/local/acc/python/bel/), als da ist corbaifc_01_idl.py und die Directories CorbaInterface01/ und CorbaInterface01__POA/

Wozu das IDL-File umbenennen?

Der IDL-Compiler erzeugt für den Zugriffscode ein Python-File mit dem gleichen Namen wie das IDL-File. Da das IDL-File für alle Versionen der Schnittstelle gleich heisst (immer corbaifc.idl), würde er für beide Versionen den Zugriffscode in dasselbe File schreiben und damit die zuerst angelegte Version überschreiben.

Der neue Name für corbaifc.idl ist beliebig, er muss nur irgendwie anders als vorher sein. Das jeweilige File mit dem Zugrifsscode wird gefunden über Einträge in init.py in den versionsspezifisch angelegten Directories CorbaInterface/ und CorbaInterface01/.
Topic revision: r4 - 18 Aug 2011, UnknownUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback