PyGTK+

<

PyJH

PyJH: Python Anbindung an die HEIDENHAIN NC

Copyright © 2007 DR. JOHANNES HEIDENHAIN GmbH. Alle Rechte vorbehalten.


PyJH 1.0 Referenz Handbuch

<>

PyJH Referenz Handbuch

PyJH Referenz:

Beschreibung der Klassen und Funktionen des PyJH Moduls.

Gültig für:
340 49x-04


Einführung

Dieses Dokument beschreibt die PyJH Klassen und Funktionen. Die Beschreibung von Daten entspricht der Heidenhain DNC.

Das jh Modul
  • Funktionen zur Abfrage und Modifikation von Daten der Steuerung.
  • Funktionen zur Steuerung des Event-Loops.
  • Funktionen zur Abfrage von Fehler-Codes
  • Funktion zum Start der Online-Hilfe
Das jh.gtk Modul
  • Klasse jh.gtk.Window als Erweiterung der Klasse gtk.Window für die Einbindung in das Steuerungs-Layout
  • Funktionen zur Registratur bzw. Deregistratur von gtk.Window
  • Funktionen zur Fokus-Steuerung und Tasten-Registratur
  • Funktion zur Auswahl des logischen Bildschirms
  • Konstanten-Deklaration für Fokus-Typen (jh.focus)
  • Konstanten-Deklaration für Tasten-Gruppen (jh.keys)
Das jh.gtk.glade Modul
  • Klasse des jh.gtk.glade.XML als Erweiterung der Klasse gtk.glade.XML für die Einbindung in das Steuerungs-Layout
  • Funktion zur Registratur der gtk.Window des Glade-Formulars
  • Funktion zur Erzeugung eines jh.gtk.glade.XML aus einem Puffer anstelle eines Files


Einführung

Format des Referenz Handbuchs

Das Format des Referenz Handbuchs orientiert sich am Format des PyGTK Referenz Handbuchs.

Funktionen, die in der Funktions-/Methode-Übersicht kursiv und in der Beschreibung ausgegraut dargestellt werden, sind noch nicht implementiert.


PyJH-Klassen Hierarchie

gobject.GObject
    gtk.Object
        gtk.Widget
            gtk.Container
                gtk.Bin
                    gtk.Window
                        jh.gtk.Window
    gtk.glade.XML
        jh.gtk.glade.XML


PyJH-Klassen Referenz

jh.gtk.Window - ein Fenster, das als default den Typ gtk.WINDOW_POPUP hat und über den Parameter "usage" im grafischen Kontext der Steuerung eingeblendet wird.
jh.gtk.glade.XML -

erlaubt das dynamische Laden einer Benutzerschnittstelle aus einer XML Beschreibungsdatei. Alle gtk.Windows werden auf jh.gtk.Windows umgesetzt.


PyJH-Klassen Referenz

jh.gtk.Window

jh.gtk.Window

jh.gtk.Window — Fenster, das im grafischen Kontext der Steuerung eingeblendet wird.

Übersicht

class jh.gtk.Window(gtk.Window):
    jh.gtk.Window(usage="")
    def destroy()
Functions

def jh.gtk.Focus(window, type)
 def jh.gtk.Screen(window, screen, onTop=False)
def jh.gtk.Keys(window, keys)

Abstammung

+-- gobject.GObject
  +-- gtk.Object
    +-- gtk.Widget
      +-- gtk.Container
        +-- gtk.Bin
          +-- gtk.Window
            +-- jh.gtk.Window

Beschreibung

Das jh.gtk.Window ist ein Fenster, das entsprechend dem Parameter usage im grafischen Kontext der Steuerung eingeblendet wird. Die Position und Größe entsprechen der Beschreibung im der Layout-Datei. Das Fenster wird sichtbar, wenn das entsprechende Layout angewählt wird. Die Registratur des Fensters im Steuerungskontext wird automatisch durchgeführt. Ist der Parameter usage nicht gesetzt oder ist dieser Name im Steuerungs-Layout nicht bekannt, so wird ein nicht registriertes Fenster (:= gtk.Window) erzeugt. Misslingt die Registrierung, so wird jedoch ein RuntimeError geworfen.

Konstruktor

    jh.Window(usage="")
usage : Name des Fensters innerhalb des Steuerungs-Layouts
Returns : a new jh.gtk.Window

Erzeugt ein neues jh.gtk.Window mit Größe und Position entsprechend dem spezifizierten Namen usage im Steuerungs-Layout.

Wenn der Name des Fensters in keinem Layout zu finden ist, der Name des Fensters leer bleibt, oder das Fenster nicht registriert werden kann, so wird ein nicht registriertes Fenster (:= gtk.Window) erzeugt. Ansonsten wird ein Fenster erzeugt und entsprechend dem Layout positioniert und dargestellt. Misslingt die Registrierung, so wird ein RuntimeError geworfen.

Hier ist ein kleines Beispiel:

  window = jh.gtk.Window("PLCsmall")

Methoden

jh.gtk.Window.destroy

    def destroy()
Returns :

Die Methode destroy() zerstört die Instanz des jh.gtk.Window. Das Fenster wird beim Zerstören automatisch deregistriert.

Signals

Funktionen

jh.gtk.Focus

    def jh.gtk.Focus(window, type)
window : Fenster für das der Fokus gesetzt werden soll.
type : Type der Fokus-Anforderung (siehe Konstanten-Definition)
Returns : True, wenn der Fokus erfolgreich gesetzt werden konnte

Die Funktion jh.gtk.Focus() fordert den Fokus für das angegebene Fenster an.

jh.gtk.Screen

    def jh.gtk.Screen(window, screen, onTop=False)
window : Fenster für das der Zielbildschirm gesetzt werden soll.
screen : Name des Bildschirms, auf dem das Fenster aufscheinen soll (siehe Konstanten-Definition)
onTop : Kennung, ob das Fenster stets auf im Vordergrund des gewählten Bildschirms bleibt.
Returns : True, wenn der Bildschirm erfolgreich gesetzt werden konnte

Die Funktion jh.gtk.Screen() wählt den logischen Bildschirm auf dem das angegebene Fenster darzustellen ist. Funktioniert nur bei nicht eingebetteten Fenstern. Wird der OemScreen als logischer Zielbildschirm gewählt, so wechselt die Anzeige auf diesen Bildschirm, ansonsten bleibt der logische Bildschirm erhalten.

jh.gtk.Keys

    def jh.gtk.Keys(window, keys)
window : Fenster für das der Fokus gesetzt werden soll.
keys : angewählte Tasten-Gruppe (siehe Konstanten-Definition)
Returns : True, wenn die Anforderung der Tastengruppe erfolgreich war

Die Funktion jh.gtk.Keys() fordert für das angegebene Fenster eine Tasten-Gruppe an.

Konstanten

jh.gtk.focus

    Fokus-Steuerung
jh.gtk.focus.GET : Fenster fordert den Fokus an und bekommt ihn, wenn der derzeitig Bedienzustand dies erlaubt.
jh.gtk.focus.CAN : Fenster soll über Fokus-Umschalt-Taste den Fokus erhalten
jh.gtk.focus.LEAVE : Fenster gibt den Fokus ab

screen

    Mögliche logische Bildschirme als String
"MachineScreen" : logischer Bildschirm auf dem die Betriebsarten Manuell, Abarbeitung, Einzelsatz, MDI dargestellt werden
"EditScreen" : logischer Bildschirm auf dem die Editoren und die Simulation dargestellt werden
"OemScreen" : logischer Bildschirm der von der NC nicht verwendet wird
"AllScreens" : Fenster wird auf allen logischen Bildschirmen dargestellt.

usage

    Mögliche eingebettete Fenster
"PLCsmall" : PLC-Status-Fenster
"PLCmedium" : PLC-Masken-Fenster
"PLClarge" : Gesamter Bildschirm ohne Softkey und Kopfzeile
"OEMmachine" : OEM-Fläche des Abarbeitungsbildschirms (verfügbar nur auf 19" TFT)
"OEMedit" : OEM-Fläche des Editierbildschirms (verfügbar nur auf 19" TFT)

jh.gtk.Keys

    Tasten-Gruppen
jh.gtk.keys.ALL : Alle Tasten mit Ausnahme der "Hotkeys" werden dem Fenster zugestellt
jh.gtk.keys.ASCII : Die ASCII-Tasten werden dem Fenster zugestellt
jh.gtk.keys.SOFTKEYS : Die Softkeys werden dem Fenster zugestellt
jh.gtk.keys.CURSOR : Die Cursor-Steuertasten (incl. Goto) werden dem Fenster zugestellt
jh.gtk.keys.NUMERIC : Die Tasten des Nummern-Blocks werden dem Fenster zugestellt
jh.gtk.keys.OPMODE : Die Betriebsart-Tasten werden dem Fenster zugestellt
jh.gtk.keys.OPENBLK : Die Blockeröffner-Tasten werden dem Fenster zugestellt


PyJH 0.1 Referenz Handbuch

PyJH-Klassen Referenz

jh.gtk.glade.XML

jh.gtk.glade.XML

jh.gtk.glade.XML — erlaubt das dynamische Laden einer Benutzerschnittstelle aus einer XML Beschreibungsdatei.

Übersicht

class jh.gtk.glade.XML(gtk.glade.XML):
    jh.gtk.glade.XML(fname, root="", domain="", typedict={})
    def jh.gtk.glade.get_widget( name, usage=None )

Functions

    def jh.gtk.glade.xml_new_from_buffer(buffer, size, root="", domain="", typedict={})

Abstammung

+-- gobject.GObject
      +-- gtk.glade.XML
            +-- jh.gtk.glade.XML

Beschreibung

Dieses Objekt verhält sich wie ein gtk.glade.XML Objekt, jedoch werden alle widgets vom Typ GtkWindow auf den Typ jh+gtk+Window umgesetzt. Somit ist sichergestellt, daß sie bei der Zerstörung des Fensters auch deregistriert werden.

Konstruktor

    jh.gtk.glade.XML(fname, root="", domain="", typedict={})
Die Parameter entsprechen denen eines gtk.glade.XML Objekts.
Returns : ein neues jh.gtk.glade.XML Objekt

Erzeugt ein neues jh.gtk.glade.XML Objekt (und die zugehörigen "widgets") aus einer XML-Beschreibungsdatei die über den Parameter fname wird. Die GtkWindow Widgets werden in jh+gtk+Window Widgets gecastet. Somit werden sie bei der Zerstörung des Widgets automatisch deregistriert.

Methoden

jh.gtk.glade.XML.get_widget

    def get_widget(name, usage=None)
name: Name des Widgets im Glade-Formular
usage: Name des Fensters innerhalb des Steuerungs-Layouts. Wird keine oder eine ungültige usage angegeben, verhält sich die Funktion wie gtk.glade.XML.get_widget()
Returns : das über name selektierte Widget

Die Methode jh.gtk.glade.XML.get_widget liefert ein gtk.Widget zurück. Wird eine usage angegeben, so wird versucht, das Widget zu registrieren und damit im Steuerungs-Layout einzublenden. Misslingt die Registrierung, so wird ein RuntimeError geworfen.

Funktionen

jh.gtk.glade.xml_new_from_buffer

    def jh.gtk.glade.xml_new_from_buffer(buffer, size, root="", domain="", typedict={})
Die Parameter entsprechen denen eines gtk.glade.XML Objekts.
Returns : ein neues jh.gtk.glade.XML Objekt

Die Funktion jh.gtk.glade.xml_new_from_buffer() Erzeugt ein neues jh.gtk.glade.XML Objekt (und die zugehörigen "widgets") aus einem Puffer buffer.


PyJH-Funktionen

jh Funktionen — die Funktionen der Module jh, jh.gtk und jh.gtk.glade

Übersicht

jh.gtk.Window-Funktionen

def jh.gtk.Window.destroy()
def jh.gtk.Focus(window, type)
def jh.gtk.Screen(window, screen, onTop=False)
def jh.gtk.Keys(window,keys=jh.keys.ALL)

jh.gtk.glade.XML-Funktionen

def jh.gtk.glade.XML.get_widget(name, usage=None)
def jh.gtk.glade.new_from_from_buffer(buffer, size, root="", domain="", typedict={})

Server-Funktionen

def jh.Subscribe(ident, notify, cancel=None, minRepeat=0.0, onChange=False, asString=False, shortForm=True)
def jh.UnSubscribe(handle)
def jh.UnSubscribe()
def jh.Get(handle)
def jh.Get(ident, asString=False, shortForm=True)
def jh.Put(dict, ident)
def jh.Help(helpFile, contextId)
def jh.ResPath(path)

Fehler-Funktionen

def jh.Errno()
def jh.Errstr()

Kontroll-Funktionen

def jh.Main()
def jh.QuitMain()
def jh.Connect(signal, callback)

Beschreibung

Diese Funktionen gehören zum PyJH jh Modul. Alle Funktionen des Moduls sind mit einem entsprechenden Link in der Aufstellung enthalten. Die Beschreibung der Funktionen, die zu einer Klasse gehören befindet sich in der Klassendefinition. Die Beschreibung der übrigen Funktionen ist nachfolgend zu finden.

Funktionen

jh.Subscribe

    def jh.Subscribe(ident, notify, cancel=None, minRepeat=0.0, onChange=False, asString=False, shortForm=True)
ident : vollständiger Datums-Bezeichner.
notify : "callback" - Funktion, die gerufen wird, wenn neue Daten zur Verfügung stehen.
cancel : "callback" - Funktion, die gerufen wird, wenn die Anfrage Server-seitig nicht mehr länger gültig ist.
minRepeat : Zeit [s], die mindestens vergeht, bevor der Server wieder neue Daten sendet.
onChange : Kennung, ob nur bei einer Änderung des Datums eine Antwort vom Server erfolgen soll.
asString : Kennung, ob die Daten stets als Zeichenkette geliefert werden sollen.
shortForm : Kennung, ob die keys der gelieferten Daten in kurzer (nur nötigste Kennung) oder langer (vollständige Kennung) geliefert werden.
Returns : "handle" für eine spätere Behandlung des Auftrags (siehe Get und UnSubscribe)

Die jh.Subscribe() Funktion fordert Daten der NC-Steuerung entsprechend dem Datums-Bezeichner an. Der Datums-Bezeichner verwendet dabei dieselbe Syntax wie Heidenhain DNC. Stehen neue Daten zur Verfügung, wird automatisch die "notify" Funktion gerufen.

Stehen die Daten nicht länger zur Verfügung, wird die "cancel" Funktion gerufen.

Mit den Parametern "minRepeat", "onChange" sowie "asString" kann das Antwortverhalten des Servers beeinflusst werden. Dabei gibt "minRepeat" die minimale Zeit in Sekunden an, die vergeht, bevor der Server neue Daten sendet, auch wenn sich das Datum in der Zwischenzeit geändert hat. Mit "onChange" wird der Server veranlasst nur bei Änderungen Daten zu senden, auch wenn die minimale Wartezeit ("minRepeat") bereits abgelaufen ist. Ist der Schalter "asString" gesetzt, werden die Daten vom Server stets als Zeichenfolge geliefert, ansonsten in dem jeweiligen Datenformat des angeforderten Datums. Mit dem Schalter "shortForm" kann spezifiziert werden, ob die "keys" im an die callback-Funktionen übergebenen Dictionary in kurzer (kürzeste eindeutige Kennung) oder langer (vollständige Kennung) geliefert werden.

Aufbau der "notify" Funktion:

  def Notify( **dict ):
dict : Dictionary der gelieferten Werte. Jeder Eintrag enthält den Bezeichner und den neuen Wert. (siehe auch "Function definition")
Returns

Aufbau der "cancel" Funktion:

  def Cancel( handle ):
handle : "handle" der nicht mehr gültigen Anfrage. (siehe auch "Function definition")
Returns

jh.UnSubscribe

    def jh.UnSubscribe(handle)
handle : "handle", das aus einem vorherigen Aufruf von jh.Subscribe geliefert wurde.
Returns :

Die jh.UnSubscribe() Funktion löscht eine vorherige Anforderung mit jh.Subscribe().

jh.UnSubscribe

    def jh.UnSubscribe()
Returns :

Die jh.UnSubscribe() Funktion löscht die aktuelle Anforderung. Diese Variante ist nötig um in der Notification von jh.Subscribe() bereits die Anforderung zurückzunehmen.

jh.Get

    def jh.Get(handle)
handle : "handle", das aus einem vorherigen Aufruf von jh.Subscribe geliefert wurde.
Returns : Dictionary der aktuellen Werte. Jeder Eintrag enthält den Bezeichner und den aktuellen Wert.

Die jh.Get() Funktion mit einem "handle" als Parameter kann genutzt werden, um bereits mittels jh.Subscribe() angeforderte Daten azyklisch zu lesen. Die aktuellen Daten werden aus dem Puffer gelesen.

jh.Get

    def jh.Get(ident, asString=False, shortForm=True)
ident : vollständiger Datums-Bezeichner.
asString : Kennung, ob die Daten stets als Zeichenkette geliefert werden sollen.
shortForm : Kennung, ob die keys der gelieferten Daten in kurzer (nur nötigste Kennung) oder langer (vollständige Kennung) geliefert werden.
Returns : Dictionary der aktuellen Werte. Jeder Eintrag enthält den Bezeichner und den aktuellen Wert.

Die jh.Get() Funktion mit den Parmetern "ident", "asString" und "shortForm" holt sich aktuell Daten von den Server-Applikationen. Die Semantik der Parameter entspricht denen der Funktion jh.Subscribe().

jh.Put

    def jh.Put(dict, ident="")
dict : Dictionary der neuen Werte. Jeder Eintrag enthält den Bezeichner und den neuen Wert.
ident : Basis-Bezeichner. Ist dieser leer, so müssen die "keys" im Dictionary den Pfad vollständig bezeichnen, ansonsten wird der ident als gemeinsamer Teil angenommen.
Returns : True wenn die Daten geschrieben werden konnten, ansonsten False

Die jh.Put() Funktion setzt Werte in der NC-Steuerung über die entsprechenden Server-Applikationen.

jh.Help

    def jh.Help(helpFile, contextId)
helpFile : Pfad der Hilfe-Datei.
contextId : Kontext-Bezeichner innerhalb der Hilfe-Datei.
Returns : True wenn die Hilfe gestartet werden konnte, ansonsten False

Die jh.Help() Funktion startet das Hilfe-System mit der angegebenen Hilfe-Datei und dem angegebenen Kontext-Bezeichner.

jh.ResPath

    def jh.ResPath(path)
path : TNC-spezifischer Pfad
Returns : Aufgelöster Pfad

Die jh.ResPath() Funktion löst TNC-spezifische Pfad auf, sodass dieselben Pfadangaben sowohl auf einer Steuerung, als auch auf einem Programmierplatz verwendet werden können.

jh.Errno

    def jh.Errno()
Returns : aktuellen Heidenhain Fehler-Code.

Die jh.Errno() Funktion liefert den aktuellen Heidenhain Fehler-Code.

jh.Errstr

    def jh.Errstr()
Returns : aktuellen Heidenhain Fehler-Text.

Die jh.Errstr() Funktion liefert den aktuellen Heidenhain Fehler-Text.

jh.Main

    def jh.Main()
Returns :

Die jh.Main() Funktion stellt den "event loop" der Python-Anwendung dar. Hier werden GTK+ und Steuerungs-Ereignisse behandelt und die entsprechenden Funktionen gerufen.

jh.QuitMain

    def jh.QuitMain()
Returns :

Die jh.QuitMain() Funktion beendet den "event loop".

jh.Connect

    def jh.Connect(signal, callback)
signal : Name des zu verbindenden Heidenhain-Signals/Events (siehe Konstanten-Definition)
callback : "callback" Funktion, die beim eintreffen des Signals/Events gerufen werden soll.
Returns :

Die jh.Connect() Funktion verbindet ein Heidenhain-Signal mit einer "call back" Funktion.


PyJH 0.1 Referenz Handbuch

<

PyJH Referenz Änderungen

PyJH Referenz Änderungen:

Stand:
15.11.2007-de