You are on page 1of 79

SOFTING GmbH Richard-Reitzner-Allee 6

85540 Haar
Tel.: 089/45656-0 Fax: 089/45656-499

INPA
Interpreter fr Prfablufe
Benutzerdokumentation

Autoren:
Georg Luderbck
Michael Koch
Roland Stadtmller
Daniel Frey

Datum: 07.01.2003

INPA.DOC

Version 2.5

INPA
Benutzerdokumentation

V 2.5

1 Einleitung
Bei der Einfhrung von neuen Steuergerten oder Steuergertevarianten in der Fertigung mu fr die
Behandlung von Problemfllen ein Diagnoseprogramm fr dieses Steuergert, z.B. fr die Nacharbeit,
bereitgestellt werden. Bisher erfolgte dies durch eine Erweiterung der Diagnoseprogramme, die fr den
Einsatz im Kundendienst entwickelt wurden.
Um auf die Anforderungen im Werk flexibler und vor allem schneller reagieren zu knnen, wurde
zunchst ein Prototyp, spter dann in der Ausbaustufe 1 ein eigenstndiges Prfablaufsystem
entwickelt, das es einem geschulten Bearbeiter vor Ort ermglicht, Nacharbeitsprogramme fr das
Werk zu entwickeln.
Diese Nacharbeitsprogramme werden in einer Prfablauf-Beschreibungssprache formuliert, die
wiederum in der jetzt vorliegenden Ausbaustufe 2 um die Anforderungen fr einen mglichst
universellen Anwendungsbereich erweitert wurde. Das hier beschriebene Ablaufsystem INPA
(INterpreter fr PrfAblufe) zeichnet sich durch die folgenden Eigenschaften aus:

leicht zu erlernen

sofortige Kontrolle des erzeugten Prfprogramms durch interaktiven Entwurf

komfortable Mglichkeiten zur Bildschirmausgabe

komfortable Mglichkeiten zur Ablaufsteuerung

einfache Mglichkeit zur Formulierung von quasi-simultanen Aktionen

umfangreiche Bibliothek mit Standardfunktionen, z.B.


- Konfiguration des Bildschirmlayouts (Vorder- und Hintergrundfarbe, Schriftgre)
- Konfiguration von Melde-Fenstern
- Ausgabe auf Drucker
- Bildschirmabzge
- Dateizugriffe
- String- und Umrechnungsfunktionen
- Standard Schnittstelle (mit und ohne Ergebnisauswertung durch das INPA-System) zum
ElektronikDIAgnose-BAsis-System (EDIABAS)

Entsprechend dem vorgesehenen Einsatzbereich des INPA erfolgt der Zugriff auf Informationen des
Fahrzeugs (bzw. des zu diagnostizierenden Steuergerts) ber das Elektronikdiagnose-Basis-System
EDIABAS und ber die EDIC Hardware.

Copyright BMW AG. Ersteller Softing GmbH

Seite 2

INPA
Benutzerdokumentation

V 2.5

1.1 Inhaltsverzeichnis
1 EINLEITUNG ........................................................................................................................................ 2
1.1 Inhaltsverzeichnis.................................................................................................................. 3
2 BERSICHT ......................................................................................................................................... 5
2.1 nderungsstand .................................................................................................................... 6
3 SYSTEMBESCHREIBUNG .................................................................................................................. 8

4 INSTALLATION UND KONFIGURATION.......................................................................................... 11


4.1 Installation............................................................................................................................ 11
4.1.1 Voraussetzung fr den Betrieb des Interpreters....................................................... 11
4.1.2 Dateien nach der Installation .................................................................................... 11
4.1.3 Einrichten des Interpreters ....................................................................................... 12
4.2 Konfiguration ....................................................................................................................... 12
4.2.1 Allgemeine Programmkonfiguration ......................................................................... 13
4.2.2 Strukturierte Scriptauswahl....................................................................................... 16
4.2.3 Fehlerausblenddateien (nicht mehr untersttzt) ....................................................... 18
4.2.3.1 Allgemeines................................................................................................. 18
4.2.3.2 Format und Inhalt ........................................................................................ 18
4.2.3.3 Verarbeitung in INPA................................................................................... 21
4.2.3.4 Beispiel........................................................................................................ 22
4.2.3.5 Beispiel AAB.FAB........................................................................................ 24
4.2.4 Kommandozeilenoptionen ........................................................................................ 26
5 PRFABLAUFBESCHREIBUNGSDATEIEN .................................................................................... 27
5.1 Dateistruktur ........................................................................................................................ 27
5.1.1 Pragmas ................................................................................................................... 27
5.1.2 Includes .................................................................................................................... 28
5.1.3 Importierte Funktionen ............................................................................................. 28
5.1.4 Externe Funktionsdeklarationen............................................................................... 29
5.1.5 Globale Datendefinitionen ........................................................................................ 30
5.1.6 Prfablaufbeschreibung ........................................................................................... 30
5.2 Ablaufprinzip von Prfungen ............................................................................................. 30
5.3 Sprachelemente ................................................................................................................... 32
5.3.1 Benutzerdefinierte Funktionen.................................................................................. 33
5.3.2 Importierte Funktionen ............................................................................................. 33
5.3.3 Bildschirmanzeige .................................................................................................... 36
5.3.4 Mensteuerung......................................................................................................... 38
5.3.5 Statemachines.......................................................................................................... 39

Copyright BMW AG. Ersteller Softing GmbH

Seite 3

INPA
Benutzerdokumentation

V 2.5

5.3.6 Logiktabellen ............................................................................................................ 41


5.3.7 Kontrollstrukturen ..................................................................................................... 42
5.3.8 Funktionen der Standardbibliothek........................................................................... 44
6 SOFTWARESTRUKTUR.................................................................................................................... 61
6.1 Parser.................................................................................................................................... 62
6.2 Datenverwaltung.................................................................................................................. 63
6.3 Objektverwaltung ................................................................................................................ 63
6.4 Interpreter............................................................................................................................. 63
6.5 Libraryfunktionen und externe DLLs ............................................................................... 64
6.6 INPA-Localization-Support-DLLs ....................................................................................... 64
6.7 Verwendete Entwicklungstools.......................................................................................... 64
7 ANHANG A SPRACHDEFINITION .................................................................................................... 65

8 ANHANG B BEISPIEL FR EINE PRFABLAUFBESCHREIBUNG ............................................... 72

Copyright BMW AG. Ersteller Softing GmbH

Seite 4

INPA
Benutzerdokumentation

V 2.5

2 bersicht
Das vorliegende Dokument dient dem Systemverstndnis zum Interpreter fr Prfablufe (INPA); der
Leser dieser Benutzerdokumentation erhlt im Kapitel 3 einen berblick ber die mglichen
Anwendungsgebiete und ber die fr den Benutzer sichtbaren Komponenten des INPA.
Kapitel 5 beschreibt den Aufbau von Prfablaufbeschreibungsdateien, den prinzipiellen Ablauf von
Prfungen und die zur Beschreibung (und zur Ausfhrung) von Prfungen zur Verfgung stehenden
Sprachelemente (z.B. auch die Funktionen der Standardbibliothek). Damit wird der Leser in die Lage
versetzt, Prfungen in einer Prfablauf-Beschreibungssprache zu formulieren und ablaufen zu lassen.
Die Auflistung der Sprachelemente im Unterkapitel 5.3 ist auch zum Nachschlagen gedacht.
Das Kapitel 6 gibt einen groben berblick ber die Softwarestruktur und die Komponenten des INPA
Ablaufsystems. Dieses Kapitel soll im Hinblick auf Softwarepflegemanahmen die
Grobzusammenhnge der Moduln erlutern.
Diese INPA Benutzerdokumentation richtet sich an

Mitarbeiter aus Abteilungen der Fa. BMW, die Prfablufe in der Fertigung in eigener
Verantwortung festlegen oder abndern

Mitarbeiter aus Abteilungen der Fa. BMW, die Prfablufe im Labor festlegen

Softwareentwickler, die fr die INPA Systempflege zustndig sind

Copyright BMW AG. Ersteller Softing GmbH

Seite 5

INPA
Benutzerdokumentation

V 2.5

2.1 nderungsstand
Ersterstellung Version 1.0, 20.09.1993
berarbeitung V1.1 06.10.1993:
Kapitel 2:
eingefgt
Kapitel 3.3.7:
Textformatierungen nher erlutert
berarbeitung V1.2, 02.02.1994:
Kapitel 3.3.7:
DTM-Funktionen und Stringarrayfunktionen aufgenommen
Hexdump-Beschreibung aktualisiert
Kapitel 3.3.2:
2. Parameter bei LINE-Konstrukt und setscreen-Funktion beschrieben
berarbeitung V1.3, 08.07.1994:
Kapitel 1:
Systemstruktur und Beschreibung aktualisiert
Kapitel 2.1:
Dateistruktur aktualisiert
Kapitel 2.2:
Beschreibung der Konfigurationsdateien aktualisiert
Kapitel 3.1.1:
neues Kapitel zur Beschreibung der pragmas aufgenommen
Kapitel 3.1.2:
Beschreibung des Include-Mechanismus und der Scriptstruktur
aktualisiert
Kapitel 3.3.3:
zweite Funktionstastenebene beschrieben
Kapitel 3.3.7:
Beschreibung der Bibliotheksfunktionen aktualisiert
Kapitel 4:
INPA-Localization-Support beschrieben
Anhang A:
Sprachdefinition aktualisiert (Programmstruktur, pragma)
Anhang B:
Parametrierung bei analogout aktualisiert
berarbeitung V1.4, 17.03.1995:
Kapitel 2:
Einarbeitung der neuen Konfiguration
Kapitel 3.7:
Einarbeitung RK512-Funktionen
Erweiterung DTM-Funktionen
Ersetzung sgselect durch scriptselect
Funktion GetBinaryDataString
Funktion printfile
Funktion calldos entfernt
berarbeitung V1.5, 16.01.1996:
Kapitel 2.2.1:
Erweiterung der Setup-Einstellungen
Kapitel 3.2.3:
Fabdateien
Kapitel 3.3.7:
Einarbeitung der neuen INPAapiFsLesen-Funktion und des Modes
0x40
Einarbeitung der INPAapiFsLesen2-Funktion
Einarbeitung der ELDIStartOpenDialog-Funktion
nderung der togglelist-Funktion
Kapitel 4.2.3:
Aufgenommen
Kapitel 4.2.1:
Sprache heit ENGLISCH
berarbeitung V1.6, 03.04.1996:
Kapitel 2.2.1:
Ergnzung der Setup-Einstellungen
Kapitel 5.3.7:
Funktionen
fileread, Delay, stringtoreal, stringtoint, inttoreal, realtoint
aufgenommen
Funktion fileopen um r-Parameter ergnzt
IS_LESEN-Sonderbehandlung eingefgt
Kapitel 4.2.4:
Kapitel Kommandozeilenoptionen aufgenommen

Copyright BMW AG. Ersteller Softing GmbH

Seite 6

INPA
Benutzerdokumentation

V 2.5

berarbeitung V1.7, 28.05.1996:


Kapitel 5.3.7:
Funktion '
Delay'heit jetzt '
delay'
berarbeitung V1.8, 05.06.1996:
Kapitel 4.1.2:
Dateinamen ergnzt
Kapitel 5.3.7:
Funktion '
Delay'heit jetzt wirklich '
delay'
; Funktion '
stringtoint'
angepasst; Grenzwert fr Min-Real angepasst; Defaultwert fr
INPAapiFsMode verbessert.
berarbeitung V1.9, 30.07.1996:
Kapitel 5.3.7:
Funktionen '
getdate'und '
gettime'ergnzt
Kapitel 4.1.2:
File '
commdlg.dll'wird nicht mehr ausgeliefert
berarbeitung V2.0, 17.02.1997:
Kapitel 4.2.1:
Konfiguration '
Splittingfile'ergnzt
Kapitel 5.1.3
Kapitel "importierte Funktionen" eingefgt
Kapitel 5.1.5
Neue Datentypen eingefgt
Kapitel 5.3.1
Neue Datentypen eingefgt
Kapitel 5.3.2
Kapitel "importierte Funktionen" eingefgt
Kapitel 5.3.7
binre Verknpfungen ergnzt
Kapitel 5.3.8
Speichermanipulationsroutinen ergnzt
Funktionen. multianalogout, scriptchange und setitem ergnzt
berarbeitung V2.1, 10.03.1997:
Kapitel 4.1.2:
Dateinamen gelscht/ergnzt
Kapitel 5.3.8:
Ergnzungen zur Funktion '
scriptchange'
berarbeitung V2.2, 27.03.1997:
Kapitel 6.7:
Kompilernamen angepasst
Kapitel 5.3.8:
Ergnzungen zur Funktion '
delay'
berarbeitung V2.2, 11.04.1997:
Kapitel 4.2.1:
Konfiguartionseinstellung Dekodiertabellen angepasst
berarbeitung V2.3, 11.02.1998:( nicht geliefert)
Kapitel 5.3.8:
DTM-Aufrufe geben Leerstrings zurck
berarbeitung V2.4, 20.07.1999
Neu formatiert
berarbeitung V2.5, 12.11.2002
32 Bit Portierung von INPA
Kapitel 3:
Keine ELDI-Anbindung mehr
Kapitel 5.1.3:
32-Bit DLLs
Kapitel 5.3.2:
32-Bit DLLs
Kapitel 5.3.8:
neue Funktion setitemrepeat

Copyright BMW AG. Ersteller Softing GmbH

Seite 7

INPA
Benutzerdokumentation

V 2.5

3 Systembeschreibung
Das System INPA basiert auf WINDOWS (95, NT oder hher) und setzt deshalb zum problemlosen
Betrieb einen PC 80386 (oder hher) mit 32 MB RAM (oder mehr) voraus. Desweiteren ist als
Hardware Schnittstelle zum Fahrzeug, oder zu einem Steuergert, ein Enhanced Diagnostic Interface
Computer (EDIC) vorgesehen.
Die Kommunikation mit dem EDIC wird ber das Elektronikdiagnose-Basis-System abgehandelt, das
als Dynamic- Link-Library (DLL) zur Verfgung stehen mu.
Typische Anwendungsgebiete fr INPA sind:

Nacharbeitsprogramme, d.h. Stand Alone Programme zum Diagnostizieren eines einzelnen


Steuergerts

"schnelle Tests", d.h. Prfablufe die nur einmal oder wenige Male verwendet werden oder
hufigen nderungen unterliegen, (z.B. Untersuchungen in der Entwicklung oder im Labor)

Einbindung von ELDI Ablufen (ELDI ist 16 Bit) ist ab der INPA-Version 5.0.0 (32-Bit) nicht mehr
mglich.
Die Entwicklung von Prfablaufprogrammen erfolgt durch einen geschulten Bearbeiter vor Ort, dem
dazu eine entsprechend flexible Beschreibungssprache an die Hand gegeben wird. Mit einem
(beliebigen) ASCII Editor werden dabei Prfablaufbeschreibungsdateien in der vorgenannten
Beschreibungssprache fr Prfablufe erstellt.
Zur Laufzeit des INPA werden diese Beschreibungsdateien interpretativ abgearbeitet, wobei sich das
System auf die in Abbildung 1 schematisch dargestellten Komponenten sttzt.
Um die Ladezeiten fr die Prfablaufbeschreibungsdateien zu verkrzen und um den Speicherbedarf
zu minimieren wurde das INPA Sytem so implementiert, da es in konfigurierbaren Modi betrieben
werden kann, nmlich als:

Integriertes System zum interaktiven Entwickeln von Prfablaufbeschreibungen und zum


Compilieren der erzeugten Beschreibungen, so da diese zur Laufzeit des INPA mit minimalem
Zeit- und Speicheraufwand geladen und abgearbeitet werden knnen.

INPA Loader zum Laden und Abarbeiten von vorcompilierten Prfablaufbeschreibungsdateien. Die
Konfiguration INPA Loader wird am Einsatzort der Prfung verwendet.

Das INPA System ermglicht, beliebige in der Prfablaufbeschreibungssprache (PABS) beschriebene


Prfablufe ablaufen zu lassen; dies bedeutet fr die Prfungen:

es knnen automatische Ablufe oder vom Benutzer ber die Tastatur gesteuerte Ablufe
formuliert werden

Prfergebnisse (oder andere Ausgaben) knnen auf dem Bildschirm oder in eine Datei (Protokoll)
ausgegeben werden, oder sie knnen als Rckgabewert an ein aufrufendes Programm
zurckgegeben werden

Copyright BMW AG. Ersteller Softing GmbH

Seite 8

INPA
Benutzerdokumentation

V 2.5

Die in den Prfablaufbeschreibungsdateien


typischerweise folgende Aufgaben:

(in

PABS)

formulierten

Prfablufe

enthalten

- Beschreibung des Prfablaufbaumes durch eine Mensteuerung


- Aufbau der Kommunikation mit einem Steuergert
- Abfrage von Daten von einem Steuergert
- Auswerten der Daten (Ergebnisse)
- Verknpfen von mehreren Ergebnissen
- Darstellen der (verknpften) Ergebnisse auf dem Bildschirm
Daneben stellt die PABS noch Elemente zur Beschreibung des Bildschirmlayouts (Farben, Schrift),
Kontrollstrukturen, wie Boolsche Operationen, bedingte Anweisungen und Schleifen zur Auswertung
und Anzeige von Ergebnissen bereit.

Komponenten des INPA:

DLL

DLL
Abbildung 1

Wie in Abbildung 1 dargestellt, besteht der Interpreter fr Prfablufe (INPA) aus mehreren
Komponenten und sttzt sich auch auf Dynamic Link Libraries (z.B. EDIABAS, Protokoll- und Etiketten
Manager sowie Lokalisierungs-DLL fr Mehrsprachlichkeit), die am vorgesehenen Einsatzort z.T. aus

Copyright BMW AG. Ersteller Softing GmbH

Seite 9

INPA
Benutzerdokumentation

V 2.5

anderen Diagnosesystemen zur Verfgung stehen. Fr Einsatzorte, an denen diese DLLs nicht
bereits vorhanden sind, knnen diese unverndert bernomen werden.

Copyright BMW AG. Ersteller Softing GmbH

Seite 10

INPA
Benutzerdokumentation

V 2.5

4 Installation und Konfiguration

4.1 Installation
4.1.1 Voraussetzung fr den Betrieb des Interpreters
Zum Betrieb des Interpreters mu EDIABAS instaliert sein.

4.1.2 Dateien nach der Installation


README
README.xyz

:
:

Datei mit allgemeinen Informationen zur Installationsdiskette


versionsspezifisches Readme zu INPA Vx.y.z

INPACOMP.EXE :
INPALOAD.EXE :
INPAGER.DLL :
INPAUS.DLL
:
BRIDGE16.EXE :

Interpreter fr Prfablufe, integriertes


System mit Compiler, Loader und Interpreter
Compiler fr Scriptdateien
Laufzeitsystem mit Loader und Interpreter
Fremdsprachenuntersttzung Deutsch
Fremdsprachenuntersttzung Englisch
16-Bit Programm, welches als Schnittstelle
zwischen der INPA Laufzeitumgebung und
16-Bit DLLs dient

EDIERROR.TXT :

Deutsche Sprachuntersttzung fr EDIABAS

Verzeichnis BIN
INPA.EXE

Verzeichnis CFGDAT
INPA.INI
INPASCR.INI
STARTGER.IPS
STARTUS.IPS
STARTGER.IPO
STARTUS.IPO

:
:
:
:
:

Konfigurationsdatei fr INPA Tools


Scriptauswahldatei fr INPA und INPALOAD
Startupscript fr Interpreter (Source), Deutsch
Startupscript fr Interpreter (Source), Englisch
:
Startupscript fr Interpreter (Object), Deutsch
Startupscript fr Interpreter (Object), Englisch

Verzeichnis HELP
INPAHELP.HLP :

Windows-Hilfedatei zu INPA

Verzeichnis PRT
*.ini
:
INPADOS.DMF :
INPAWIN.DMF :
./ENGLISCH bzw.

Drucker-Initialisierungsdateien
Druckmaskendatei fr INPA-Bildschirmabzge ber PEM
Druckmaskendatei fr INPA-Bildschirmabzge ber
Windows-Standarddrucker

Copyright BMW AG. Ersteller Softing GmbH

Seite 11

INPA
Benutzerdokumentation

V 2.5

./DEUTSCH
:
E3ETIKET.DMF :
E3PROTOK.DMF:

Sprachabhngige Versionen des:


Etiketten-Druckmaskenfile (wird PEM-intern verwendet)
Protokoll-Druckmaskenfile (wird PEM-intern verwendet)

Verzeichnis TRACE
(enthlt die Temporrdatei fr INPA-Bildschirmabzug bei Betrieb ohne Drucker)
("DRUCKER=NEIN" in INPA-Konfigurationsdatei)
Verzeichnis SGDAT
INPA.H

Headerdatei mit Prototypes der INPA-Bibliotheksfunktionen

(enthlt zustzlich die Scriptdateien des Anwenders)


Verzeichnis DEMO
(enthlt optional Demodateien zu speziellen INPA-Funktionen)

4.1.3 Einrichten des Interpreters


Die Installation erfolgt durch Aufruf von setup.exe unter Windows.
Bei der Installation ist der Zielpfad anzugeben (Default: c:\inpa).

4.2 Konfiguration
Die Konfiguration von INPA erfolgt mit Hilfe von zwei Konfigurationsdateien, die im Verzeichnis
.\CFGDAT enthalten sind:

Konfigurationsdatei ..\CFGDAT\inpa.ini bestimmt die Konfiguration fr die INPA Tools


Konfigurationsdatei ..\CFGDAT\inpascr.ini dient als Default-Scriptauswahldatei fr INPA und
INPALOAD

Copyright BMW AG. Ersteller Softing GmbH

Seite 12

INPA
Benutzerdokumentation

V 2.5

4.2.1 Allgemeine Programmkonfiguration


Die allgemeine Konfiguration der INPA-Tools erfolgt mit Hilfe der Konfigurationsdatei inpa.ini.
Diese hat folgenden Aufbau (Bsp.):
[FAB]
FABDATEIEN= \INPA\FAB
[ENVIRON]
DRUCKER=NEIN
NETZ=NEIN
BARCODE=NEIN
PEM=JA
DTM=JA
NETZDATEN=\inpa\bin\net.dat
DECODIERTABELLE_D_ALLE=c:\WINELDI\CFGDATEN\FP_D.DET
DECODIERTABELLE_E_E36=c:\WINELDI\CFGDATEN\FP_E_36.DET
SPLITTINGFILE=.. ..\CFGDAT\SPLIT.DET
LANGUAGE=DEUTSCH
EDITOR=DOS
SCRIPTSELECT=LIST
DEFINI=inpascr.ini
Die Konfigurationsdateien haben das Format von Windows-INI-Dateien. Sie enthalten verschiedene
Sektionen, deren Namen in eckigen Klammern stehen (Beispiel: [ENVIRON]), in denen verschiedene
Eintrge enthalten sind. Diese haben folgende Bedeutung:

Copyright BMW AG. Ersteller Softing GmbH

Seite 13

INPA
Benutzerdokumentation

V 2.5

Sektion [ENVIRON]:
Druckereinstellungen fr Bildschirmabzge:
DRUCKER=WIN
Bildschirmabzge werden ber den Windows-Druckmanager auf
dem konfigurierten Windows-Standarddrucker ausgegeben.
DRUCKER=PEM
Bildschirmabzge werden auf dem angeschlossenen WinEldiDrucker ausgegeben
DRUCKER=JA
Bildschirmabzge werden auf dem angeschlossenen WinEldiDrucker ausgegeben
DRUCKER=NEIN
Bildschirmabzge werden in die Datei .\TRACE\p.trc ausgegeben
und knnen mit einem DOS-View-Programm angezeigt werden
Einstellung der WINELDI-Protokollierung:
PEM=JA
Aktiviert den Protokoll-Etiketten-Manager.
Einstellungen fr den DatenTabellenManager
(wird ab Version 5.0.0 nicht mehr untersttzt):
DTM=NEIN
DTM ist eine Funktionalitt von Eldi, welches ab Version 5.0.0 nicht
mehr untersttzt wird. Daher ist DTM=NEIN gleich zu setzen (bzw.
aus der Ini-Datei komplett zu streichen), andernfalls erfolgt ein
Warnhinweis beim Start von INPA.
Einstellung der Mehrsprachlichkeit:
LANGUAGE=DEUTSCH
Programmtexte und -meldungen in deutscher Sprache
LANGUAGE=ENGLISCH
Programmtexte und -meldungen in englischer Sprache
Defaulteinstellung des verwendeten Editortyps:
EDITOR=DOS
Scriptbearbeitung mit DOS-Editor als Defaulteinstellung
EDITOR=WIN
Scriptbearbeitung mit Windows-Editor als Defaulteinstellung
Einstellungen fr INPA und INPALOAD unter Verwendung des WINELDI-Eingangshandlers
(wird ab Version 5.0.0 nicht mehr untersttzt):
NETZDATEN=\inpa\bin\net.dat
- Name Einstellungsdatei fr den Netzzugriff auf die Auftragsdaten
DECODIERTABELLE_D_Alle=
- Dekodiertabellen frAuftragsdatendekodierung
DECODIERTABELLE_E_E36=
- Dekodiertabellen fr Auftragsdatendekodierung
SPLITTINGFILE=
- Auftrennungsvorschrift fr Dekodierung (notwendig)
( Die genannten Eintrge sind Defaulteintrge und nur relevant, wenn der Eingangshandler von INPA
bzw. INPALOAD aufgerufen wird )
Art der Scriptauswahl fr INPA (nicht wirksam fr INPALOAD!):
SCRIPTSELECT=LIST
Scriptauswahl ber Auswahlliste entsprechend der jeweiligen
Scriptauswahldatei
SCRIPTSELECT=DIALOG Scriptauswahl ber einen Standarddialog
Default-Scriptauswahldatei fr INPA und INPALOAD:
DEFINI=inpascr.ini
Name der Default-Scriptauswahldatei im Verzeichnis .\CFGDAT

Copyright BMW AG. Ersteller Softing GmbH

Seite 14

INPA
Benutzerdokumentation

V 2.5

Die brigen Eintrge dieser Sektion werden zur Zeit nicht verwendet und sollen unverndert
bleiben.

Copyright BMW AG. Ersteller Softing GmbH

Seite 15

INPA
Benutzerdokumentation

V 2.5

4.2.2 Strukturierte Scriptauswahl


Die Aktivierung der Scriptauswahl erfolgt durch die Funktion "scriptselect", welche als
Funktionsparameter den Namen der bei der Scriptauswahl zu verwendenden INI-Datei erhlt. Wird
hierbei ein Leerstring "" angegeben, so wird der in der Konfigurationsdatei unter dem Eintrag DEFINI
enthaltene Name verwendet. Alle INI-Dateien zur Scriptauswahl mssen sich im Verzeichnis ".\cfgdat"
befinden, der dazugehtige Pfad wird automatisch generiert.
Die Strukturierung der Scriptauswahl erfolgt durch Aufteilung auf entsprechende Sections in der
Scriptauswahldatei. Die Sectionnamen knnen frei gewhlt werden, drfen allerdings keinen
Unterstrich "_" enthalten, da dieser als Trennzeichen zwischen den Hierarchieebenen verwendet wird.
Die Reihenfolge der Sections mu nach dem Top-Down-Prinzip erfolgen. Jede Section kann folgende
Eintrge enthalten:
DESCRIPTION=<Text>
enthlt den Text, der in der Scriptauswahlstruktur dargestellt wird
ENTRY=<Scriptdatei-Basename,Text>
enthlt den Basisnamen der Scriptdatei (also OHNE Extension) und den Text,der in der
Scriptauswahlstruktur dargestellt wird. Die beiden Eintrge werden durch ein Komma
getrennt.
Beispiel:
Aufbau des folgenden Baumes:
Fahrzeuge
Baureihe 1
Steuergert 1
Steuergert 2
Baureihe 2
Sonderprfungen
Kurztest
Steuergert 3
Steuergert 4
Baureihe 3
Steuergert 5
Steuergert 6

Copyright BMW AG. Ersteller Softing GmbH

Seite 16

INPA
Benutzerdokumentation

V 2.5

Dazu folgende Eintrge in der Scriptauswahl-Datei:


[ROOT]
DESCRIPTION=Fahrzeuge
[ROOT_BAUREIHE1]
DESCRIPTION=Baureihe 1
ENTRY=sg1,Steuergert 1
ENTRY=sg2,Steuergert 2
[ROOT_BAUREIHE2]
DESCRIPTION=Baureihe 2
ENTRY=sg3,Steuergert 3
ENTRY=sg4,Steuergert 4
[ROOT_BAUREIHE2_SONDER]
DESCRIPTION=Sonderprfungen
ENTRY=kurztst,Kurztest
[ROOT_BAUREIHE3]
DESCRIPTION=Baureihe 3
ENTRY=sg5,Steuergert 5
ENTRY=sg6,Steuergert 6
Im Beispiel ist dem Steuergert 1 die Scriptdatei "sg1.ips" fr den Interpreter bzw. "sg1.ipo" fr den
Loader zugeordnet.

Copyright BMW AG. Ersteller Softing GmbH

Seite 17

INPA
Benutzerdokumentation

V 2.5

4.2.3 Fehlerausblenddateien (ab Version 5.0.0 nicht mehr untersttzt)


4.2.3.1 Allgemeines
Fehlerausblendung ist eine Teilfunktionialitt von Eldi und wird ab Version 5.0.0 nicht mehr untersttzt.
Fr jede SG-Variante, fr die ein oder mehrere Fehler ausgeblendet werden sollen, mu jeweils eine
eigene Fehlerausblenddatei existieren. Der Pfad auf die Fehlerausblenddateien wird in der Sektion
[FAB] unter dem Eintrag FABDATEIEN= in der INPA.INI angegeben.

4.2.3.2 Format und Inhalt


Eine Fehlerausblenddatei fr eine SG-Variante hat den Namen
<sgbd>.FAB
wobei <sgbd> identisch sein mu mit dem Namen der zugehrigen SG-Variante bzw. dem Namen der
SG-Beschreibungsdatei.
Die neuen Fehlerausblenddateien haben folgendes Format und Inhalt:
; Kommentare sind durch ";" in der ersten Spalte gekennzeichnet
; ***** FAB-Section *******************************************************
[FAB]
Fehler=<fort_nr>[ <fort_nr> ...]
; ***** F-ORT-NR-Section **************************************************
[<fort_nr>]
; Auflistung der Ausblendbedingungen
[AB=<AB_name>[ <AB_name>...]]
; ***** AB-Section ********************************************************
[<AB_name>]
Bed1=<AB_beschreibung>
Bed2=<AB_beschreibung>
...
Bedn=<AB_beschreibung>

Copyright BMW AG. Ersteller Softing GmbH

Seite 18

INPA
Benutzerdokumentation

V 2.5

Beschreibung der Sections und deren Elemente:


FAB-Section [FAB]:
Fehler=

Schlsselwort zur Kennzeichnung des Eintrags der auszublendenden Fehler

<fort_nr>

Fehlernummer

AB-Section [<AB_name>]:
Section, in der Ausblendbedingungen definiert sind, die alle erfllt sein mssen, damit ein Fehler
ausgeblendet wird (Verundung)..
<AB_name>

Name der Section

Bed1=

Schlsselwort zur Kennzeichnung des Eintrags fr die


1. Ausblendbedingung.

Bed2=

Schlsselwort zur Kennzeichnung des Eintrags fr die


2. Ausblendbedingung.

....

AB Beschreibungen <AB_beschreibung>:
Im folgenden werden die vier Mglichkeiten zur Formulierung von Ausblendbedingungen beschrieben:
1. AAB : Auftragsbezogene Ausblendbedingungen (Barcodemuster) :
<AB_beschreibung> AAB <AAB_Nr>[ <AAB_Nr> ...]
AAB

Schlsselwort zur Kennzeichnung einer auftragsbezogenen


AB-Bedingung

<AAB_Nr>

Nummer der auftragsbezogenen Ausblendbedingung, die in der Datei


AAB.FAB definiert wird. Eine auftragsbezogene Ausblendbedingung ist erfllt
wenn mindestens eine der AAB_nr-Bedingungen erfllt ist (Veroderung).
Format der AAB.FAB siehe Beispiel im Anhang.

Es wird geprft, ob die aktuellen Auftragsdaten die Bedingungen erfllen. Bei nicht vorhandenen
Auftragsdaten, z.B. an einem Nacharbeitsstand, gilt die Bedingung als nicht erfllt.

Copyright BMW AG. Ersteller Softing GmbH

Seite 19

INPA
Benutzerdokumentation

V 2.5

2. FS-LESEN : Ergebnisse des Jobs FS_LESEN


<AB_beschreibung>

FS_LESEN <apiresult_typ> <apiresult_name> <operator> ...


... "<vergleichswert>"

FS_LESEN

Schlsselwort zur Kennzeichnung von Bedingungen, die sich auf


Ergebnisse des Jobs FS_LESEN beziehen

<apiresult_typ>

Typ des Ergebnisses. Mgliche Werte:


APIBINARY, APILONG, APICHAR, APIBYTE,
APIDWORD, APIINTEGER, APIREAL, APITEXT und APIWORD

<apiresult_name>

Ergebnisname des Jobs FS_LESEN, z.B. F_UW1_WERT.

<operator>

Je nach <apiresult_typ> sind folgende Operatoren mglich:


<
:
kleiner
>
:
grer
==
:
gleich
!=
:
ungleich

<vergleichswert>

Je nach <apiresult_typ> werden die hier eingegebenen Zeichen als


numerische Werte oder als String interpretiert.
Eintrag mu innerhalb von " ... " stehen !

Es wird geprft, ob der aus dem Steuergert mit FS_LESEN ausgelesene Wert des Ergebnisses
<apiresult_name> die Bedingung <operator> <vergleichswert> erfllt.
3. AUFTRAG : Symbolische auftragsbezogene Ausblendbedingungen
<AB_beschreibung>

AUFTRAG <auftragsdatenname> <auftragsdatenwert>

AUFTRAG

Schlsselwort zur Kennzeichnung eines Auftragsdatum-Eintrags.

<auftragsdatenname>

Auftragsdatenname, wie er in der Decodiertabelle (DET) steht


(Auftragsziel '
A'oder '
B'
)

<auftragsdatenwert>

Sollwert, wie er in der Decodiertabelle (DET) steht, bzw. bei der


Auftragsdatendecodierung generiert wird.

Es wird verglichen, ob das Auftragsdatum <auftragsdatenname> den <auftragsdatenwert> hat. Bei nicht
vorhandenen Auftragsdaten, z.B. an einem Nacharbeitsstand, gilt die Bedingung als nicht erfllt.

Copyright BMW AG. Ersteller Softing GmbH

Seite 20

INPA
Benutzerdokumentation

V 2.5

4. JOB : Ergebnisse beliebiger Jobs


<AB_beschreibung>

JOB <SGBD_name> <job_name> "<job_parameter>" ...


... <apiresult_typ> <apiresult_name> <operator> ...
... "<vergleichswert>"]

JOB

Schlsselwort zur Kennzeichnung eines Job-Eintrags.

<SGBD_name>Name der Steuergerte-Beschreibungsdatei ohne Extension


z.B. KOMBI36 oder D_0010
<job_name>

Name des aufzurufenden Jobs

<job_parameter>

bergabeparameter fr den aufzurufenden Job.


Eintrag mu innerhalb von " ... " stehen.

<apiresult_typ>

SIEHE OBEN

<apiresult_name>

Ergebnisname des Jobs <job_name>

<operator>

SIEHE OBEN

<vergleichswert>

SIEHE OBEN

Es wird geprft, ob das aus dem Steuergert <SGBD_name> mit dem Job <job_name> ausgelesene
Ergebnis <apiresult_name> die Bedingung <operator> <vergleichswert> erfllt.
Der Job darf nur aufgerufen werden, wenn das zugehrige Steuergert <SGBD_name> lt.
Auftragsdaten auch verbaut ist. Ist dies nicht der Fall, so gilt die Bedingung als nicht erfllt
Der Job wird nur einmal gestartet, d.h. im Falle von APIFALSE erfolgt keine Wiederholung.

4.2.3.3 Verarbeitung in INPA


Fr jeden ausgelesenen Fehlercode F_ORT_NR wird untersucht, ob es in einer Datei <sgdb>.FAB
eine gleichnamige F-ORT-NR-Section gibt. Ist dies nicht der Fall, so wird der Fehler nicht
ausgeblendet. Ist dies der Fall, so wird untersucht, ob Eintrge fr Ausblendbedingungen angegeben
sind. Gibt es diese Eintrge nicht, so wird der Fehler ausgeblendet.
Sind dagegen AB-Sections angegeben, wird untersucht, ob mindestens eine (d.h. Veroderung) der ABSections erfllt ist, d.h. alle (Verundung) AB-Einzelbedingungen einer AB-Section zutreffen. Ist dies
der Fall, wird der Fehler ausgeblendet. Ist keine AB-Section erfllt, so wird der Fehler nicht
ausgeblendet.
Fr einen Fehlercode knnen eine F-ORT-NR-Section und beliebig viele AB-Sections existieren.
Verschiedene F-ORT-NR-Sections knnen auf dieselbe AB-Section verweisen.

Copyright BMW AG. Ersteller Softing GmbH

Seite 21

INPA
Benutzerdokumentation

V 2.5

In INPA wird die Fehlerausblendung von den Funktionen


INPAapiFsLesen
INPAapiFsLesen2
APIJobFsLesenFAB
APIResultFsLesenFAB
verwendet.

4.2.3.4 Beispiel
Folgender Fall soll angenommen werden:
Der Fehler 2, Leerlaufsteller/Schliesswicklung, der DME331 soll nur dann ausgeblendet werden,
wenn die in der AAB.FAB formulierte auftragsbezogene Ausblendbedingung 10 erfllt ist, die Fehlerart
Fehler nach Entprellung abgespeichert vorliegt, der Fehler bei einer Motordrehzahl
(Umweltbedingung) zwischen 1500 U/min und 2300 U/min aufgetreten ist, laut Barcodevorgabe das
Gurtstrammer-Beifahrer-Flag gesetzt ist und sich beim Steuergert ASC2E das Telegramm
Test_Drosselklappe ausfhren lt

ODER

wenn das Hex-Muster '


02, 34, 0A, 0B, EF'vorliegt.

Die Fehler 3, 5 und 7 sollen ausgeblendet werden, wenn die Fehlerart sporadisch vorliegt.
Alle Fehler sollen ausgeblendet werden, die bei einer Motordrehzahl kleiner 650 U/min aufgetreten
sind.
Es mu eine Fehlerausblenddatei mit dem Namen DME331.FAB existieren mit folgendem Inhalt:
; FAB-Section ----------------------------------------------------------[FAB]
Fehler= 2 3 4 5 6 7
; F-ORT-NR - Sections ----------------------------------------------------; fr Fehler 2, '
Leerlaufsteller/Schliesswicklung'
[2]
AB=AB1 AB2 AB4
; fr Fehler 3
[3]
AB=AB3 AB4
; fr Fehler 4
[4]
AB=AB4
; fr Fehler 5
[5]
AB=AB3 AB4
; fr Fehler 6
[6]
AB=AB4

Copyright BMW AG. Ersteller Softing GmbH

Seite 22

INPA
Benutzerdokumentation

V 2.5

; fr Fehler 7
[7]
AB=AB3 AB4

; AB - Sections ----------------------------------------------------------[AB1]
Bed1=AAB 10
Bed2=FS_LESEN APITEXT F_ART1_TEXT == "Fehler nach Entprellung abgesp."
Bed3=FS_LESEN APIREAL F_UW1_WERT > "1500"
Bed4=FS_LESEN APIREAL F_UW1_WERT < "2300"
Bed5=AUFTRAG GURTSTRAMMER_BF == "1"
Bed6=JOB ASC2E TEST_DROSSELKLAPPE "" APITEXT JOBSTAUS == "OKAY"
[AB2]
Bed1=FS_LESEN APIBINARY F_HEX_CODE == "02, 34, 0A, 0B, EF"
[AB3]
Bed1=FS_LESEN APITEXT F_ART5_TEXT == "Fehler sporadisch"
; fr alle Fehlercodes gemeinsam
[AB4]
Bed1=FS_LESEN APIREAL F_UW1_WERT < "650"

Copyright BMW AG. Ersteller Softing GmbH

Seite 23

INPA
Benutzerdokumentation

V 2.5

4.2.3.5 Beispiel AAB.FAB


; AAB.fab
;
5.11.92, 26.3.93
J.R.Romano
;
; AAB = Auftragsabhaengige AusblendBedingungen
;
fuer Eldi/3 - FS-Fehler-Ausblendung
;
; Diese Datei hat zwei Sections:
;
; [AB] AusblendBedingungen
; 1=AEB1,AEB2,...,AEBn AB-Nr. (wie in *fab.dat)= AEB-Liste mit [symbolischen] Namen
; 2=EML6
(werden programmintern "geundet")
;
; [AEB] AusblendEinzelBedingungen
; AEBi=Code,Stelle,Laenge,Muster[,N]
;
;
mit: Code: FG,E1,E2,E3, D1,D2,D3 oder D4 (2 chars)
;
Stelle: 3 <= Stelle <= 25
(max. 2 chars)
;
Laenge: 1 <= Laenge <= 23
(max. 2 chars)
;
Muster: String
(Laengechars; max. 23 chars)
;
N:
Negation der AEB (optional, max. 1 char)
;
; Ein "Odern" von ABs wird mittels mehrfach Eintraege implementiert!
; Alle Eintraege sind case-unabhaengig!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[AB]
1=E31,E31_D
2=NEIN
; ABs 3 bis 8 fuer Bordcomputer ohne Standlueftung bzw. -heizung
3=E32,NO_SL
4=E34,NO_SL
5=E32,NO_SH
6=E34,NO_SH
7=E31,NO_SL_31
8=E31,NO_SH_31
; AB 9 fuer DME 316: 36 Tankentlueftung
9=SA199
; AB 10 fuer DME 136: 29 Geschwindigkeitssignal
10=EMLVERB
; AB 11 fuer ZKE1 : ADV 01 und 02
11=NO_ADV1,NO_ADV2,NO_ADV3,NO_ADV4
; AB 12 fuer ZKE1 : Fehler 8 TSH
12=NO_TSH1,NO_TSH2,NO_TSH3,NO_TSH4
; AB 13 fuer ZKE1 : ADV 01 und 02 D-Barcode

Copyright BMW AG. Ersteller Softing GmbH

Seite 24

INPA
Benutzerdokumentation

V 2.5

13=N_ADV1_D,N_ADV2_D,N_ADV3_D,N_ADV4_D
; AB 14 fuer ZKE1 : Fehler 8 TSH D-Barcode
14=N_TSH1_D,N_TSH2_D,N_TSH3_D,N_TSH4_D
; AB 15/16 fuer BC IV : Fehler Standheizung /-lueftung
15=NO_SL_D
16=NO_SH_D
[AEB]
NEIN=E1,11,2=xx
JA=E1,15,1=x,N
E32=FG,6,1=G
E34=FG,6,1=H
E31=FG,6,1=E
E31_D=FP,6,1=E
NO_SL=E3,3,1=0
NO_SH=E3,3,1=2,N
NO_SL_D=D2,19,1=0
NO_SH_D=D2,19,1=3,N
NO_SL_31=E3,4,1=0
NO_SH_31=E3,4,1=2,N
SA199=E1,14,1=A
EMLVERB=E1,15,1=0,N
NO_ADV1=E3,5,1=1,N
NO_ADV2=E3,5,1=4,N
NO_ADV3=E3,5,1=5,N
NO_ADV4=E3,5,1=7,N
NO_TSH1=E3,5,1=3,N
NO_TSH2=E3,5,1=5,N
NO_TSH3=E3,5,1=6,N
NO_TSH4=E3,5,1=7,N
N_ADV1_D=D2,15,1=4,N
N_ADV2_D=D2,15,1=5,N
N_ADV3_D=D2,15,1=6,N
N_ADV4_D=D2,15,1=7,N
N_TSH1_D=D2,15,1=1,N
N_TSH2_D=D2,15,1=3,N
N_TSH3_D=D2,15,1=5,N
N_TSH4_D=D2,15,1=7,N

Copyright BMW AG. Ersteller Softing GmbH

Seite 25

INPA
Benutzerdokumentation

V 2.5

4.2.4 Kommandozeilenoptionen
Allen Programmen des INPA-Pakets knnen optional direkt auf der Kommandozeile ein zu
bearbeitendes INPA-Script angegeben werden; z.B.:
INPALOAD.EXE \INPA\CFGDAT\STARTGER.IPO
Beim INPA-Compiler knnen noch Wildcards d.h. Platzhalter fr Dateinamen wie * und ?
angegeben werden. Zustzlich besitzt er eine Batchmodefunktion, die mit dem Parameter -B aktiviert
wird. Der Compiler luft dann im Hintergrund und fordert keine Benutzerangaben an. Zudem kann der
Schalter 16BIT gesetzt werden. In diesem Fall werden Objectfiles erzeugt, die von der letzten 16-Bit
Version von INPA (Version 4.4) interpretiert werden knnen. Eine Kompilierung fr die Version 4.4 ist
nur mglich, wenn das Skript keine Funktionalitt (setitemrepeat, import32) verwendet, die erst ab
Version 5.0.0 existiert.
Syntax:
INPACOMP.EXE <filename.ext> [-16BIT] [-B [<errors.log>]] (nur fr Batchmode des Compilers)

Copyright BMW AG. Ersteller Softing GmbH

Seite 26

INPA
Benutzerdokumentation

V 2.5

5 Prfablaufbeschreibungsdateien
5.1 Dateistruktur
Abbildung 2 zeigt den schematischen Aufbau einer Prfablaufbeschreibungsdatei. Die Angaben in den
Positionen "Includes", "externe Funktionsdeklarationen" und "globale Datendefinitionen" sind optional;
dagegen ist das Vorhandensein einer Prfablaufbeschreibung mit den Funktionen "inpainit ()" zum
Start und "inpaexit ()" zum Beenden des Prfablaufs (siehe auch 3.2 Ablaufprinzip) zwingend
vorgeschrieben.

Abbildung 2
Zur bersetzungszeit wird ber der Prfablaufbeschreibungsdatei eine Syntaxberprfung
durchgefhrt, die gegebenenfalls zu einer Fehlermeldung fhrt. Prfablaufbeschreibungsdateien, die
nicht fehlerfrei bersetzt werden konnten, sind zur Laufzeit nicht ausfhrbar.

5.1.1 Pragmas
Pragmas sind Anweisungen an den bersetzer zur Steuerung des bersetzungsvorganges. Die
Syntax ist wie folgt definiert:
#pragma <identifer>

Copyright BMW AG. Ersteller Softing GmbH

Seite 27

INPA
Benutzerdokumentation

V 2.5

Folgende Pragmas stehen zur Steuerung der Zeichenkonvertierung whrend des


bersetzungsvorganges zur Verfgung:
#pragma winedit

Das Script wurde mit einem Windows-Editor


geschrieben. Es soll keine OEMToAnsi-Konvertierung
durchgefhrt werden.

#pragma dosedit:

Das Script wurde mit einem DOS-Editor geschrieben.


Es soll eine OEMToAnsi-Konvertierung durchgefhrt
werden.

Die o.g. Pragmas verndern die in der Konfigurationsdatei definierte Editor-Einstellung nur fr die
Dauer des bersetzungsvorganges. Nach Abschlu der bersetzung wird wieder die in der
Konfigurationsdatei definierte Default-Editor-Einstellung aktiviert.

5.1.2 Includes
Mit der "#include" Anweisung in der Prfablaufbeschreibungsdatei knnen andere INPA-Scriptdateien
inkludiert werden. Hierbei ist zu beachten, da nur eine Include-Ebene untersttzt wird, d.h.
geschachtelte Includes sind nicht mglich. In den Dateien knnen die Scriptelemente grundstzlich in
beliebiger Reihenfolge auftreten. Allerdings mssen Funktionen und Daten vor Gebrauch definiert
werden, bei Funktionen evtl. eine vorwrts-Deklaration mittels "extern" durchgefhrt werden. Daher ist
es zweckmig Headerdateien mit extern-Deklarationen am Scriptanfang zu includieren und danach
alle globale Daten zu definieren. Anschlieend knnen z.B. Script-Includedateien mit StandardScriptelementen includiert werden, bevor weitere Definitionen von Scriptelementen folgen.
Die Prototypen (extern-Deklarationen) aller Funktionen der INPA-Standardbibliothek befinden sich in
der Datei "inpa.h", welche normalerweise in jedem INPA-Scipt includiert wird.
Syntax:

#include "<dateiname>"

Beispiel:
#include "inpa.h"

5.1.3 Importierte Funktionen


INPA bietet ab der Version 4.4.0 die Mglichkeit, Funktionen aus INPA-fremden 16-Bit-Bibliotheken
einzubinden, ab Version 5.0.0 auerdem zustzlich auch aus 32-Bit-Bibliotheken. Die zu
importierenden Funktionen mssen in INPA ber Funktionsdeklarationen bekanntgegeben werden.
INPA ld dann die Bibliothek mit der entsprechenden Funktion zur Laufzeit des Skripts und fhrt die
Funktion - fr das Skript nicht unterscheidbar gegenber anderen Funktionen - wie eine INPAFunktion aus. Die Deklaration der importierten Funktionen erfolgt hnlich der Deklaration interner
Funktionen.
Da bei der Deklaration die Parameter mit Richtungsinformation, Datentyp und Parameternamen
angegeben werden mssen, kann der korrekte Gebrauch der Funktionsparameter innerhalb des INPASkripts durch den Parser berprft werden; allerdings kann die Konsistenz zu der tatschlichen
Aufrufkonvention nicht geprft werden.

Copyright BMW AG. Ersteller Softing GmbH

Seite 28

INPA
Benutzerdokumentation

V 2.5

Syntax fr 16-Bit DLLs:


import [C | pascal ] lib DLLName[::DLLInternerFncName] functionname(r_info: <datentyp> , r_info:
<datentyp> ,..., r_info: <datentyp> , [returns: <datentyp>] );
Beispiel:
import pascal lib user.exe MessageBox(in: int Hwnd, in: string MyText, in: string Title, in: flags,
returns: int ret );
Syntax fr 32-Bit DLLs:
import32 [C | pascal ] lib DLLName[::DLLInternerFncName] functionname(r_info: <datentyp> ,
r_info: <datentyp> ,..., r_info: <datentyp> , [returns: <datentyp>] );
Beispiel:
import32 "C" lib "kernel32.dll" GetSystemDirectoryA(out:string Path, in:int bufferlen);
Technische Informationen zu den Aufrufkonventionen:

16 Bit Pascal
16 Bit C
32 Bit Pascal
32 Bit C

Funktionsname functionname
wird zu
FUNCTIONNAME
_functionname
_functionname@x (wobei x die
Gesamtgre der auf dem Stack
bergebenen Parameter in Byte ist)
functionname

Parameterreihenfolge
auf dem Stack
vorwrts
rckwrts
rckwrts

Aufrumen des
Stacks
Aufgerufene Funktion
Aufrufer
Aufgerufene Funktion

rckwrts

Aufrufer

Aufgrund der Implementierung von INPA spielt der Unterschied beim Aufrumen des Stacks keine
Rolle. Bei 32-Bit-DLL-Aufrufen besteht somit der einzige Unterschied zwischen C und Pascal somit in
der Anpassung des Funktionsnamens.
Bei Aufrufen von 32-System-DLLs ist dabei folgendes zu beachten:
Funktionen in System-DLLs rumen den Stack gem der Pascal-Aufrufkonvention auf, der Name
ist jedoch unverndert (wie in der C-Aufrufkonvention). Da das Aufrumen des Stacks nicht beachtet
werden mu, ist bei der Deklaration von 32-Bit-System-DLL-Funktionen die Aufrufkonvention C zu
benutzen, damit der korrekte Funktionsname verwendet wird. Bei 16-Bit System-DLLs hingegen gilt
wie in alten INPA-Versionen die Konvention pascal.

5.1.4 Externe Funktionsdeklarationen


Externe Funktionsdeklarationen werden verwendet um Bibliotheksfunktionen zu deklarieren. Innerhalb
einer Prfablaufbeschreibungsdatei knnen sie auch zur Vorwrtsdeklaration verwendet werden; d.h.
eine im Dateiheader extern deklarierte Funktion kann innerhalb der Datei benutzt werden, bevor sie
definiert ist.
Da bei der extern Deklaration die Parameter mit Richtungsinformation, Datentyp und Parameternamen
angegeben werden mssen, kann der korrekte Gebrauch der Funktionsparameter durch den Parser
berprft werden.
Syntax:

extern functionname(r_info: <datentyp> par1, r_info: <datentyp> par2,..., r_info: <datentyp>


parx);

Beispiel:

Copyright BMW AG. Ersteller Softing GmbH

Seite 29

INPA
Benutzerdokumentation

V 2.5

extern text_output (in: int zeile, in: int spalte, in: string ausgabetext);

5.1.5 Globale Datendefinitionen


Es knnen Variablen vereinbart werden, die in einem globalen Datenpool gehalten werden. Dabei sind
die folgenden Datentypen mglich:
- byte ( 8-Bit Integer)
- int (16-Bit-Integer)
- long ( 32-Bit-Integer)
- real (Fliepunktzahl mit doppelter Genauigkeit)
- bool (Wahrheitswert, TRUE oder FALSE)
- string ( Null-terminierte Zeichenreihe)
Die vereinbarten globalen Variablen knnen initialisiert werden; Variable gleichen Typs knnen nach
der Typangabe durch Komma getrennt werden.
Syntax:

<datentyp> varname;

Beispiel:
byte a = 41;
int i;
long l = -20000;
real druck, temp;
bool valid = FALSE;
string zustand = "offen";

5.1.6 Prfablaufbeschreibung
Die Prfablaufbeschreibung besteht zumindest aus der Initialisierungsfunktion "inpainit()", die den
Prfablauf startet, und der Terminierungsfunktion "inpaexit()", die den Prfablauf beendet (siehe auch
3.2 Ablaufprinzip). ber die Initialisierungsfunktion "inpainit()" werden die anwendungsspezifischen
Prfablufe aufgerufen, die aus Bildschirmbeschreibungen (siehe auch 3.3.2 Bildschirmanzeigen),
Mensteuerung (siehe auch 3.3.3 Mensteuerung) und benutzerdefinierten Funktionen (siehe auch
3.3.1 Funktionen) bestehen knnen.
Die Verwendung von Bildschirmanzeigen und Mensteuerung fr einen Prfablauf ist optional, d.h. es
knnen auch Prfablufe ohne Anzeigen auf dem Bildschirm definiert werden.

5.2 Ablaufprinzip von Prfungen


Der Ablauf der Prfung wird ber Funktionen aus der Standardbibliothek oder ber benutzerdefinierte
Funktionen festgelegt. Mit Hilfe dieser Funktionen werden Bildschirme definiert, die dann durch
Mendefinitionen verbunden werden, so da sich ein Prfablaufbaum ergibt (Abbildung 3).

Copyright BMW AG. Ersteller Softing GmbH

Seite 30

INPA
Benutzerdokumentation

V 2.5

Abbildung 3
Die Wurzel des Prfablaufbaumes wird bestimmt durch die Funktion "inpainit ()", die in der
Prfablaufbeschreibungsdatei vorhanden sein mu. Der Prfablauf wird beendet durch einen Aufruf
der (Standard-) Funktion "exit ()", der von beliebiger benutzerdefinierter Stelle aus erfolgen kann. Die
Funktion "exit ()" ruft die Funktion "inpaexit ()", in der benutzerspezifische Endebehandlungen definiert
werden knnen, auf, und fhrt dann eine Endebehandlung fr das System aus.
Fr die Gestaltung eines Prfablaufs ist nur vorgeschrieben, da "inpainit ()" und "inpaexit ()"
vorhanden sind, wobei "inpaexit ()" auch leer sein kann.

Copyright BMW AG. Ersteller Softing GmbH

Seite 31

INPA
Benutzerdokumentation

V 2.5

Aufbau der Funktionen "inpainit ()" und "inpaexit ()":


inpainit ()
{
settitle ("Titel des Eingangsbildschirms");
setscreen (<Name des Eingangsbildschirms>);
setmenu (<Name des Eingangsmens>);
}
inpaexit ()
{
/* Benutzerspezifische Endeanweisungen (optional)*/
...
...
}
Damit knnen nun Prfablufe festgelegt werden, die, wie in Abbildung 3 dargestellt, Anzeigen auf den
Bildschirm ausgeben und Benutzerinteraktionen zulassen, oder es knnen Prfablufe festgelegt
werden, die ohne Anzeigen und Eingriffsmglichkeiten automatisch ablaufen, wobei die
Prfergebnisse z.B. in einer Datei abgelegt werden.
Ein mgliches Vorgehen zur Erstellung eines Nacharbeitsprogrammes knnte etwa in folgenden
Schritten beschrieben werden:
- definieren der im Nacharbeitsprogramm vorgesehenen Bildschirme; dazu knnen Funktionen
aus der Standardbibliothek oder benutzerdefinierte Funktionen verwendet werden.
- definieren der jeweils zu einem Bildschirm gehrigen Mens, und Belegen der
Funktionstasten der Menleisten (dadurch wird eine Baum- oder Netzstruktur fr den
Prfablauf festgelegt)
- Aufruf des Startfensters und des Einstiegsmens in die Funktion "inpainit()" eintragen
- benutzerspezifische Endebehandlung in die Funktion "inpaexit()" eintragen (z.B. Aufruf von
"INPAapiEnd ()")
Zur Laufzeit erfolgt eine zyklische Bearbeitung der Bildschirmaktionen. Pseudoparallel hierzu werden
Hintergrundablufe, die mit Hilfe von Statemachines beschrieben werden, bearbeitet. Dieser
pseudoparallele Betrieb wird spter nher beschrieben werden.

5.3 Sprachelemente
Die Festlegung der Prfablufe erfolgt mit Hilfe von benutzerdefinierten Funktionen und Strukturen. Es
stehen folgende Strukturen zur Verfgung:
"SCREEN" zur Beschreibung des Bildschirmaufbaus und der dazugehrigen Ablufe
"MENU" zur Beschreibung der mglichen Benutzerinteraktionen und zur Verknpfung der
beschriebenen Bildschirme
"STATEMACHINE" zur Beschreibung von Ablufen
"LOGTABLE" zum Umsetzen von mehreren abhngigen Eingangsbedingungen in mehrere
abhngige Ausgangsbedingungen

Copyright BMW AG. Ersteller Softing GmbH

Seite 32

INPA
Benutzerdokumentation

V 2.5

5.3.1 Benutzerdefinierte Funktionen


Benutzerdefinierte Funktionen knnen von beliebiger Stelle in der Prfablaufbeschreibung aufgerufen
werden. Wenn eine Funktion benutzt werden soll, bevor sie deklariert ist, so ist eine
Vorwrtsdeklaration gleich einer externen Funktionsdeklaration ntig.
Syntax:

function_name (richt_info: param_typ param_1, . . . , richt_info: param_typ param_n)


{
/* lokale Daten */
...
/* Anweisungen */
...
}

Jeder Parameter in der Deklaration mu vollstndig (mit drei Koeffizienten) angegeben werden. Die
Koeffizienten haben die folgende Bedeutung:
- Richtungsinformation
- in: auf den Parameter darf nur lesend zugegriffen werden
- out: auf den Parameter darf nur schreibend zugegriffen werden
- inout:auf den Parameter darf lesend und schreibend zugegriffen werden
- Parametertyp
- byte ( 8-Bit Integer)
- int (16-Bit-Integer)
- long ( 32-Bit-Integer)
- bool (Wahrheitswert, TRUE oder FALSE)
- string ( Null-terminierte Zeichenreihe)
- Parametername
kann vom Benutzer beliebig definiert werden

5.3.2 Importierte Funktionen


Ab der Version 4.4.0 kann INPA auch Funktionen aus fremden Bibliotheken zur Ausfhrung innerhalb
eines Skripts verwenden.
Als Funktionen aus fremden Bibliotheken werden Funktionen bezeichnet, die ausserhalb INPAs
implementiert worden sind. INPA untersttzt derzeit Aufrufe aus einem INPA-Skript in eine dynamische
Windowsbibliothek ( DLL ).
INPA knnen importierte Funktionen ber import-Anweisungen fr 16-Bit DLLs und import32Anweisungen fr 32-Bit DLLs im Skript bekannt gemacht werden:
Syntax:
import [ <CallConv> ] lib LibName[::LibFnc] <functionname> ( [<declaration_list>] );
import32 [ <CallConv> ] lib LibName[::LibFnc] <functionname> ( [<declaration_list>] );

Copyright BMW AG. Ersteller Softing GmbH

Seite 33

INPA
Benutzerdokumentation

V 2.5

Beschreibung:
Jede Deklaration importierter Funktionen beginnt zwingend mit dem Schlsselwort import'oder
import32'
Wahlweise kann zwischen dem Schlsselwort import und lib die verwendete Aufrufkonvention
angegeben werden:
CallConv:
pascal
C

( defaultwert ) INPA verwendet die Pascal Aufrufkonvention


INPA verwendet die C Aufrufkonvention

Bei 32-Bit DLLs ist die Aufrufkonvention nur fr die Modifizierung des Funktionsnamens relevant. Bei
32-Bit-System-DLLs mu die Konvention C benutzt werden, damit der korrekte Funktionsname
verwendet wird (siehe Kapitel 5.1.3).
Nach dem Schlsselwort lib mu der Name der Bibliothek angegeben werden. Hier sind folgende
Angaben mglich:
LibName:
C:\TMP\myLib.dll

Angabe der Bibliothek mit absolutem oder relativem Pfad

myLib.dll

Angabe der Bibliothek ohne Pfad ( die Bibliothek muss entweder bereits in den
Arbeitsspeicher von Windows geladen sein, oder liegt in einem der in der
DOS-Umgebungsvariablen PATH eingestellten Pfade bzw. im BINVerzeichniss des INPA-Systems

myLib

Referenziert eine bereits im Arbeitsspeicher des Rechners liegende Bibliothek


(z.B. user.exe fr eine Kernel-Bibliothek oder api fr das EDIABASLaufzeitsystem ).

Optional kann, getrennt durch zwei Doppelpunkte ( ::) der von der Bibliothek exportierte interne
Name ( ::LibFnc angegeben werden. Damit kann der im INPA-Skript bekannte Name der Funktion
von dem in der externen Bibliothek definierten Namen abweichen.
Anschlieend ist der Funktionsname zu definieren, unter dem das Skript die externe Funktion
ansprechen kann.
Die Deklaration der bergabeparameter fr importierte Funktionen unterscheidet von der externDeklaration in drei Punkten:
- Es kann eine Skriptvariable als returns-Parameter ( Rckgabeparameter ) deklariert werden.
- Die bergabe von Speicherbereichen ( Structures ) und deren Gltigkeitsprfung ist mglich.
- Alle bergebenen Parameterwerte sind temporrer Natur.
Whrend der letzte Punkt nur fr Entwickler von externen Bibliotheken von Interesse ist, sind die
ersten beiden Punkte von entscheidender Bedeutung fr den Skriptentwickler.

Copyright BMW AG. Ersteller Softing GmbH

Seite 34

INPA
Benutzerdokumentation

V 2.5

Allgemeine Syntax einer Importparameterliste:


import [...] fnc( [ <dir:> <type> <name> | <dir: > structure: <name> [, ...]] [, returns: <type> <name>]);
Allgemeine Parameterliste:
Die allgemeine Parameterliste hat das gleiche Format wie bei der Deklaration von '
extern -Funktionen:
<dir:>
Richtung des Parameters:
in:

Der Parameter wird der Funktion bergeben; diese kann bzw. darf den Wert in der Variablen
nicht verndern ( bergabe einer temporren Variable )

out: Die Funktion kann den Parameter beschreiben, aber nicht lesen. Importierten Funktionen knnen
- entgegen extern deklarierten Funktionen - den Inhalt der Variablen auch lesen; der Wert der
Variablen entspricht dem aktuellen Wert der Variablen. out: entspricht damit bei importierten
Funktionen eher dem Richtungsbezeichner inout:.
inout: Die Funktion kann den Parameter sowohl lesen als auch beschreiben.
<type:>
Art des Parameters:
byte:
int:
long:
real:
string:

8-Bit-integerwert
16-Bit-integerwert
32-Bit-integerwert
8-Byte-Fliekommawert
Nullterminierte Zeichenkette ( String)

<name> - Beliebiger ( nach Mglichkeit aussagekrftiger !) Bezeichner.


structure:
Der Deklarationstyp structure kann zur Typen bzw. bergabekontrolle an eine importierte
herangezogen werden. Wird bei einem Aufruf der importierten Funktion ein Parameter
Deklarationstyp structure bergeben, so prft INPA vor dem Aufruf der Funktion,
Parameterwert tatschlich einen gltigen Speicherbereich referenziert. Hier knnen
Situationen auftreten:

Funktion
mit dem
ob der
folgende

- Aufruf der Funktion mit gltigem Strukturwert:


INPA ruft die Funktion auf.
- Aufruf der Funktion mit ungltigem Strukturwert:
INPA bricht das Skript mit einer Fehlermeldung ab.
- Aufruf mit einem Null-Struktur:
INPA bergibt der Funktion den globalen Skript-Speicherbereich

Copyright BMW AG. Ersteller Softing GmbH

Seite 35

INPA
Benutzerdokumentation

V 2.5

- Funktion gibt NULL-Struktur zurck:


INPA setzt den Wert der Strukturvariablen auf -1 ( ungltig )
- Funktion gibt ungltige Struktur zurck
INPA bricht das Skript mit Fehlermeldung ab
returns:
Der Deklarationstyp returns: mu am Ende der Deklaration stehen: Er gibt den Wert an, den die
importierte Funktion zurckgibt. Wird kein Wert angegeben, so nimmt INPA an, das eine Procedure (
Pascal) bzw. ein void Typ (C) vorliegt. Es besteht keine Notwendigkeit, den returns:-Parameter
anzugeben, wenn der Rckgabewert der Funktion nicht ausgewertet werden mu..

WICHTIG:
- Die Parameterliste MUSS mit der tatschlich von der importierten Funktion verarbeiteten
Parameterliste bereinstimmen ( ausgenommen returns:); INPA kann diese Liste nicht selbst
identifizieren, oder sich - nach Aufteten eines Fehlers - wieder erholen.
- INPA bricht - aufgrund des internen Aufbaus - das Script im Fehlerfall nicht sofort ab, sondern
arbeitet den aktuellen Object-Block noch vollstndig ab. Zur Vermeidung sich aufhufender
Fehlermeldung wird daher geraten, in einem Block nur eine importierte Funktion aufzurufen!
- Jeder Aufruf einer importierten Funktion erzeugt einen groen Overhead an Verwaltungsaufwand im
INPA, insbesondere bei 16-Bit-DLLs. Bei sehr hufigem Aufruf von importierten Funktionen kann
die Ablaufgeschwindigkeit des Skripts leiden!

5.3.3 Bildschirmanzeige
Die Bildschirmanzeigen werden ber SCREEN - Konstrukte beschrieben. Dabei stellt ein SCREEN
eine benannte Struktur dar, die ber einen "setscreen (s_name, FrequFlag)" - Aufruf aktiviert wird.
"s_name" steht fr den Namen des SCREENs, FrequFlag beeinflut die zyklische Bearbeitung
(FrequFlag=TRUE fr zyklische Bearbeitung des Screens, FrequFlag=FALSE fr einmalige
Bearbeitung).
SCREENs beschreiben virtuelle Bildschirme mit einer unbeschrnkten Anzahl von logischen Zeilen
(LINE). Logische Zeilen beinhalten die benutzerdefinierten Aktionen und knnen aus mehreren
Anzeigeelementen, und damit auch aus mehreren physikalischen Bildschirmzeilen, bestehen. Die
Koordinatenangaben bei den Anzeigefunktionen einer logischen Zeile erfolgen relativ zum Beginn der
jeweiligen logischen Zeile.
Zur Laufzeit kann der sichtbare Bereich auf dem virtuellen Bildschirm verschoben werden.

Copyright BMW AG. Ersteller Softing GmbH

Seite 36

INPA
Benutzerdokumentation

V 2.5

Abbildung 4

SCREENs werden zyklisch abgearbeitet (wenn FrequFlag=TRUE bei der Aktivierung mit setscreen),
wobei Funktionen angegeben werden knnen, die zum SCREEN gehren, und die bei jedem
Durchlauf aufgerufen werden. Die zu den LINEs gehrigen Funktionen werden nur aufgerufen, wenn
die entsprechende LINE im sichtbaren Bereich liegt.
Bsp:

LINE( "LineSelectText", "API-String") { ..... }

Jede logische Zeile besitzt einen eindeutigen Namen "LineSelectText" und wird durch das LINEStatement eingeleitet. Logische Zeilen knnen zur Laufzeit ber ihren Namen aus einem Selektions Men zur vergrerten Bildschirmdarstellung ausgewhlt werden.
Die API-Strings dienen zur Optimierung der Resultabfragen beim EDIABAS-Betrieb. Sie enthalten die
innerhalb der jeweiligen logischen Zeile verwendeten EDIABAS-Resultparameter. Die API-Strings aller
sichtbaren logischen Zeilen knnen in konkatenierter Form mit Hilfe der Bibliotheksfunktion
"getapistring(...)" abgefragt werden, um sie anschlieend bei der EDIABAS-Resultabfrage zu
bergeben, was eine zeitliche Optimierung bewirkt.
Eine logische Zeile kann einen CONTROL-Block zur Realisierung von Steuerfunktionen enthalten. Die
durch diesen CONTROL-Block geklammerten Anwenderfunktionen werden zur Laufzeit auf
Benutzeranforderung ausgefhrt, wenn die logische Zeile im sichtbaren Bildschirmbereich liegt. Eine
Anwendung fr einen CONTROL-Block ist z.B. das Ansteuern von Bauteilen mit anschlieender
Ausgabe des Ergebnisses.

Beispiel eines typischen SCREENs:


SCREEN s_main ()
{
text( 1, 0, "Identifikationsdaten Steuergert XYZ");
text( 3, 0, "");
INPAapiJob("XYZ","IDENT","","");
/* Aufruf bei jedem Zyklus */

Copyright BMW AG. Ersteller Softing GmbH

Seite 37

INPA
Benutzerdokumentation

V 2.5

INPAapiCheckJobStatus("OKAY");
LINE ( "Teilenummer", "")
/* Name der Zeile fr vergrerte Darstellung zur Laufzeit */
{
text( 0, 1, "Teilenummer: ");
/* Ausgabe des Texts "Teilenummer" in phys. Zeile 0, Spalte 1*/
INPAapiResultText(t0,"ID_NR",1,"");
/* Abholen der Teilenummer von der Schnittstelle, Ablegen in t0 */
textout( t0, 0, 35);
/* Ausgabe der Teilenummer in phys. Zeile 0, Spalte 35 */
text( 2, 0, "");
/* Leerzeile */
}
LINE ( "Datum_KW", "")
/* Name der Zeile fr vergrerte Darstellung zur Laufzeit */
{
text( 0, 1, "Herstelldatum Woche: "); /* Textausgabe "Herstelldatum Woche:" in phys. Zeile 0, Spalte 1*/
INPAapiResultText(t1,"ID_DATUM_KW",1,"");/* Abholen von der Schnittstelle, Ablegen in t1 */
textout( t1, 0, 35);
/* Ausgabe von t1*/
text( 2, 0, "");
/* Leerzeile */
}
LINE ( "Datum_JAHR", "")
/* Name der Zeile fr vergrerte Darstellung zur Laufzeit */
{
text( 0, 1, "Herstelldatum Jahr: ");
/* Textausgabe "Herstelldatum Woche:" in phys. Zeile 0, Spalte 1*/
INPAapiResultText(t3,"ID_DATUM_JAHR",1,"");/* Abholen von der Schnittstelle, Ablegen in t3 */
textout( t3, 0, 35);
/* Ausgabe von t3*/
text( 2, 0, "");
/* Leerzeile */
}
}

5.3.4 Mensteuerung
Die Mens (MENU) beschreiben vom Benutzer definierte Aktionen, die bei Bettigung einer
Funktionstaste zur Laufzeit ausgefhrt werden sollen. In diese Aktionen knnen auch
Bibliotheksfunktionen eingebunden werden, wie z.B. das Wechseln von MENUs oder SCREENs.
Dadurch lassen sich Prfablufe als Baum- oder Netzstruktur beschreiben.
Zu einem Men knnen innerhalb einer Struktur INIT Funktionen angegeben werden, die einmalig
beim Aktivieren des Mens ausgefhrt werden sollen. Hier kann z.B. mit der Funktion "setmenutitle
("Titeltext")" eine berschrift zum Men angegeben werden.
In jedem Men knnen bis zu 20 Funktionstasten F1..F10 und <Shift>F1..F10 mit Hilfe der ITEM
Konstrukte belegt werden. Diese ITEM Konstrukte legen die Aktionen bei Bettigung der
Funktionstaste durch den Anwender fest. Die Nummer und Beschriftung der Funktionstaste wird mit
nr, bzw "Itemtext" angegeben, wobei die Nummern 1..10 sich auf die Tasten <F1>..<F10> und die
Nummern 11..20 auf die Tastenkombinationen <SHIFT><F1>...<SHIFT><F10> beziehen. Bei
Bettigen der <SHIFT>-Taste findet eine automatische Aktualisierung der Funktionsleiste statt.
Innerhalb eines ITEM-Konstrukts knnen beliebig viele Funktionsaufrufe enthalten sein.

Copyright BMW AG. Ersteller Softing GmbH

Seite 38

INPA
Benutzerdokumentation

V 2.5

Beispiel:
MENU m_main () /* Hauptmenue */
{
INIT {
INPAapiInit();
setmenutitle( " Grundmenue");
}
ITEM( 2 , "Ident") {
setscreen( s_ident ,TRUE);
setmenu( m_ident );
}
ITEM( 5 , "Status") {
setscreen( s_status ,TRUE);
setmenu( m_status );
}
ITEM( 6 , "Steuern") {
setscreen( cs_steuern ,TRUE);
setmenu( m_steuern );
}

ITEM( 20 , "Ende") {
exit();
}

/* Initialisierung wird einmal beim Start des MENUs ausgefhrt */

/* Funktionstaste F2 mit "Ident" beschriften */


/* Aufruf von Ident SCREEN */
/* und Ident MENU */
/* Funktionstaste F5 mit "Status" beschriften */
/* Aufruf von Status SCREEN */
/* und Status MENU */
/* Funktionstaste F6 mit "Steuern" beschriften */
/* Aufruf des SCREEN zum Bauteile ansteuern*/
/* und des entsprechenden MENUs */
/* Funktionstaste <SHIFT><F10>, INPA verlassen */

5.3.5 Statemachines
Statemachines dienen zur einfachen Formulierung von unterbrechbaren Hintergrundaktionen, die
pseudoparallel zu den SCREENs und zu den Funktionstasten betrieben werden. Bei den
Statemachines werden Blcke mit Anwendercode immer vollstndig ausgefhrt bevor ein Wechsel
zum parallel betriebenen Objekt (andere Statemachine, SCREEN oder Funktionstaste) stattfindet. Als
Block wird dabei entweder eine logische Zeile eines SCREENs, oder ein einzelner Zustand einer
Statemachine, oder der einer Funktionstaste zugeordnete Code betrachtet.
Beispielsweise wird der Code der Logischen Zeile 1 ausgefhrt, anschlieend der des Zustands 3,
danach der der logischen Zeile 4, dann wiederum der Code des Zustands 3, da noch kein
Zustandswechsel erfolgt ist, usw. Trifft dazwischen ein Funktionstastenereignis ein, so wird dessen
Code mit hchster Prioritt, also direkt nach Beendigung des gerade bearbeiteten Codeblocks,
ausgefhrt.
Zur Aktivierung bzw. zum Wechsel von Statemachines, zur Zustandsweiterschaltung sowie zum Aufruf
von "Sub-Statemachines" stehen Bibliotheksfunktionen zur Verfgung. Die Verwendung von "SubStatemachines" erlaubt eine logische Aufteilung von Aufgaben, die unterbrechbar sein mssen, in der
von Funktionen bekannten Art und Weise (Aufrufhierarchie). Hierbei kann aus einer Statemachine
durch Aufruf der Bibliotheksfunktion "callstatemachine" eine neue Statemachine als untergeordnete
Statemachine aktiviert werden. Die Aktionen dieser Statemachine sind im Gegensatz zu einer reinen
Funktion unterbrechbar, d.h. die Wechsel zur SCREEN-Bearbeitung und die Behandlung der
Tastaturereignisse findet statt. Ist die Aufgabe der "Sub-Statemachine" beendet, erfolgt durch den
Aufruf der Bibliotheksfunktion "returnstatemachine" die Rckkehr zu der Codestelle in der
bergeordneten Statemachine, von der aus der Substatemachine-Aufruf erfolgte.
Die Schachtelungstiefe der Statemachines ist nicht begrenzt.

Copyright BMW AG. Ersteller Softing GmbH

Seite 39

INPA
Benutzerdokumentation

V 2.5

Jede Statemachine hat einen Initialisierungszustand ("INIT"), der immer vorhanden sein mu. Der hier
enthaltene Anwendercode wird nach Aktivierung der Statemachine ausgefhrt. Die Verzweigung in den
nchsten Zustand findet auch hier durch den Aufruf der Bibliotheksfunktion "Setstate" statt. Neben
diesem Initialisierungszustand kann eine unbegrenzte Anzahl von Zustnden in der Statemachine
enthalten sein. Jeder Zustand wird durch einen vom Anwender frei definierbaren Namen
gekennzeichnet, wobei zu beachten ist, da die Zustandsnamen innerhalb der Statemachine eindeutig
sein mssen. Jedem Zustand ist ein Block mit Anwendercode zugeordnet. Bei jeder zyklischen
Statemachine-Abarbeitung wird der Codeblock des gerade aktiven Zustandes ausgefhrt. Erfolgt in
dem Zustand keine Verzweigung, so wird bei der nchsten Abarbeitung derselbe Codeblock
ausgefhrt.

Copyright BMW AG. Ersteller Softing GmbH

Seite 40

INPA
Benutzerdokumentation

V 2.5

Beispiel:
STATEMACHINE sm_motorlaufsignal_ein()
{
int try_repeat_counter;
int TRY_COUNTER_MAX;
string job_state;
string job_state;
bool motor_lauf;
INIT
{
try_repeat_counter = 0;
TRY_COUNTER_MAX = 3;
delete_screen();
print_line("GSA_TEST", 1,10);
print_line("Prfung Motorlaufsignal", 4, 10);
action_box_open("Bitte Motor einschalten");
delay(2000);
}

setstate(MOTORLAUFSIGNAL_TELEGRAMM_SENDEN);

MOTORLAUFSIGNAL_TELEGRAMM_SENDEN
{
if (try_repeat_counter < TRY_COUNTER_MAX)
{
INPAapiJob("GSA","STATUS_LESEN","","");
INPAapiResultText(job_state, "JOB_STATUS", 1, "");
INPAapiResultDigital(motor_lauf, "STAT_MOTOR_SIGNAL_EIN", 1);
try_repeat_counter = try_repeat_counter + 1;

setstate(AUSWERTEN_MOTORLAUFSIGNAL);
}
else
{
callstatemachine( sm_fehlerbehandlung);
...
}

AUSWERTEN_MOTORLAUFSIGNAL
{
...
}

5.3.6 Logiktabellen
Logiktabellen ermglichen die Formulierung von Boolschen Ausdrcken und damit die Umsetzung
von verknpften Eingangsbedingungen in verknpfte Ausgangswerte. Dies erfolgt mit Hilfe von
Binrkonstanten, die durch einen Prfix "0y" bezeichnet werden. Die Bits der Binrkonstanten
entsprechen der Reihenfolge der Logiktabellenparameter, und knnen folgende Werte annehmen:

Copyright BMW AG. Ersteller Softing GmbH

Seite 41

INPA
Benutzerdokumentation

V 2.5

"1" entspricht "TRUE"


"0" entspricht "FALSE"
"x" oder "X" entspricht "beliebig"
In der letzten (und nur in der letzten) Zeile knnen die Eingangsdefinitionen das Schlsselwort
"OTHER" annehmen, fr den Fall, da keine der vorherigen Eingangsdefinitionen zutreffend war. Falls
das Schlsselwort "OTHER" nicht angegeben ist, und keine der Eingangsdefinitionen zutrifft, bleiben
die Ausgangswerte unverndert.
Die Abarbeitung zur Laufzeit erfolgt durch zeilenweisen Vergleich der Eingangsvariablen mit den
Eingangsdefinitionen. Sobald eine Definition zutrifft, wird der Vergleich beendet und die
Ausgangsvariablen werden entsprechend gesetzt.
Die definierten Bedingungen werden nicht auf Widerspruchsfreiheit oder auf berschneidungen
berprft.
Hinweis zur Syntax:
In der Kopfzeile der LOGTABLE werden die Ausgangsparameter von den Eingangsparametern durch
Komma getrennt. Die Parameter selbst werden nicht durch Kommata sondern durch Blanks getrennt
(siehe Beispiel).
Beispiel:
LOGTABLE testlog (out: bool out1 out2, in: bool in1 in2 in3)
{
0y00:
0y000; /* alle Eingangsvariablen FALSE, dann out1, out2 ebenfalls beide FALSE */
0y01:
0y101; /* in1, in3 TRUE, in2 FALSE, dann out1 FALSE, out2 TRUE */
0y10:
0y010; /* . . . */
0y11:
OTHER; /* in allen anderen Fllen out1 = TRUE, out2 = TRUE */
}
Beispiel fr den Aufruf dieser LOGTABLE testlog:
testfunction ()
{
bool out1, out2;
...
testlog (out1, out2, TRUE, FALSE, TRUE) /* fhrt zu out1 = FALSE, out2 = TRUE */
...
}

5.3.7 Kontrollstrukturen
Zur Formulierung der Prfablufe knnen die im folgenden aufgefhrten Kontrollstrukturen verwendet
werden.
- Zuweisung
= (IST GLEICH, ERGIBT SICH ZU)
Syntax siehe Anhang A: Sprachdefinition
Beispiel:
x1 = 5;

Copyright BMW AG. Ersteller Softing GmbH

Seite 42

INPA
Benutzerdokumentation

V 2.5

- Vergleiche
< (KLEINER), <= (KLEINER ODER GLEICH), != (UNGLEICH), == (GLEICH), >= (GRSSER
ODER GLEICH), > (GRSSER)
Syntax siehe Anhang A: Sprachdefinition
Beispiel:
if (x1 == 5)
{
...
}

- logische Verknpfungen fr Digitalvariablen:


! (NOT), && (LOGISCH UND), | | (LOGISCH ODER), ^ ^ (EXCLUSIV ODER)
- binre Verknpfungen:
& (BINRES UND), | (BINRES ODER), ^ (EXCLUSIV ODER)
Syntax siehe Anhang A: Sprachdefinition
Beispiel:
x1 = ((x2 & x3) | x4 *3;

- Schleifen
WHILE (expression)
{
statements;
}
Syntax siehe Anhang A: Sprachdefinition
Beispiel:
while (x1 > x2)
{
x1 = x1 - x2;
}

- bedingte Ausfhrung
IF ( expression)
{
statements;
}
ELSE
{
statements;
}
Syntax siehe Anhang A: Sprachdefinition
Beispiel:
if (x1 > 0)
{
x2 = x1;
}
else
{
x2 = 0;
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 43

INPA
Benutzerdokumentation

V 2.5

5.3.8 Funktionen der Standardbibliothek


In der Standardbibliothek stehen alle hartcodierten INPA-Bibliotheksfunktionen zur Verfgung. Diese
umfassen folgende Gruppen:

Systemfunktionen
Konvertierungsfunktionen
Stringfunktionen
Stringarray-Funktionen
Eingabefunktionen
Ausgabefunktionen
Dateizugriffsfunktionen
Userboxfunktionen
Schnittstellenfunktionen zu Windows
Speichermanipulationsfunktionen
Fileviewer-Funktionen
EDIABAS-Funktionen
Schnittstellenfunktionen zum Protokoll-Etiketten-Manager
Schnittstellenfunktionen zum Daten-Tabellen-Manager (ab Version 5.0.0 nicht mehr
untersttzt)
RK512-Funktionen (ab Version 5.0.0 nicht mehr untersttzt)
WINELDI-Funktion (en) (ab Version 5.0.0 nicht mehr untersttzt)

Die einzelnen Funktionen der o.g. Gruppen werden nachfolgend kurz beschrieben. Die genaue
Funktionsdeklaration ist dem jeweiligen Prototyp in der Headerdatei inpa.h im Verzeichnis .\sgdat zu
entnehmen.
- INPA - Systemfunktionen
-setmenu (menu)
Aktivieren eines Mens (siehe auch 3.3.3 Mensteuerung)
-setscreen (screen, frequ)
Aktivieren eines Screen fr ein- (frequ = FALSE) oder mehrmaligen (frequ = TRUE)
Durchlauf (siehe auch 3.3.2 Bildschirmanzeigen)
-setmenutitle (menutitle)
Angabe des Men -Titels
-settitle (screentitle)
Angabe des Screen - Titels
-setstate (state)
in einer Statemachine Zustand einstellen
-setstatemachine (statemach)
Aufruf einer Statemachine

Copyright BMW AG. Ersteller Softing GmbH

Seite 44

INPA
Benutzerdokumentation

V 2.5

-callstatemachine (statemach)
Aufruf einer Statemachine als Unterprogramm
-returnstatemachine ()
Rckkehr aus einer Statemachine als Unterprogramm
-settimer (timernum, time)
Timer mit Nummer timernum mit Zeit time in ms aufziehen
-testtimer (timernum, flag)
Timer mit Nummer timernum prfen, bei flag=TRUE ist Timer abgelaufen
-delay(ms)
INPA stoppt die Scriptabarbeitung fr ms - Millisekunden ( negative Werte
entsprechen ( 65536 - |x| ) ms
-getdate (date)
Holen des Systemdatums in den String '
date'
. Das Datum wird im Format dd.mm.yyyy
abgelegt
-gettime (time)
Holen der Systemuhrzeit in den String '
time'
. Die Uhrzeit wird im Format hh:mm:ss
abgelegt.
-setjobstatus ( jobstat)
setzt den Job Status fr WINELDI
-exit()

Verlassen des Programmes

-exitwindows()
Verlassen von windows
-scriptselect( ScriptIniName)
Aufruf der Scriptauswahl unter Verwendung der angegebenen Scriptauswahldatei
-scriptchange( ScriptFileName)
Beenden des aktuellen Skripts und starten des Skripts '
SkriptFileName'
. Die
Skriptnamen knnen sowohl mit absoluten oder relativen Pfadnamen versehen
werden; die Endungen *.IPO bzw. *.IPS werden automatisch angefgt. Die aktuelle
Kodeliste wird noch vollstndig abgearbeitet, bevor das angegebene Skript gestartet
wird.

Copyright BMW AG. Ersteller Softing GmbH

Seite 45

INPA
Benutzerdokumentation

V 2.5

-select(MultSelectFlag)
Auswahl von logischen Zeilen; mit MultSelectFlag=FALSE lt sich nur eine Zeile
auswhlen, mit MultSelectFlag=TRUE lassen sich mehrere Zeilen auswhlen.
Auswahlkombinationen lassen sich unter einem logischen Namen (Set) speichern.
Hierzu wird nach Zusammenstellung der Auswahl der Setname im Editfeld der
Dialogbox eingetragen und anschlieend der Button "Speichern" bettigt. Daraufhin
erscheint derSetname in der darunterbefindlichen Set-Liste. Die Auswahl
gespeicherter Sets erfolgt durch Positionierung des Cursors auf den gewnschten
Setnamen in der Set-Liste und Bettigen der Return-Taste. Bei der Positionierung des
Cursors wird die Auswahlanzeige so aktualisiert, da die zum angewhlten Set
gehrige Auswahl direkt angezeigt wird. Die Speicherung der Sets erfolgt Screen- und
Script-bezogen in einem INI-File mit dem Basename des Scripts und der Extension
"INI" im SGDAT-Verzeichnis.
-setitem(nr, text, enable)
Wechseln des Mennamens zur Laufzeit. Der Text in der Auswahlleiste unter dem
Menpunkt '
nr'wird in '
text'gewechselt. '
Enable'gibt an, ob der Menpunkt anwhlbar
ist, oder grau dargestellt wird.
-setitemrepeat(nr, enable)
Normalerweise wird eine Menfunktion einmal ausfhrt, wenn die entsprechende FTaste gedrckt wird (bzw. genaugenommen, wenn sie wieder losgelassen wird). Wird
fr den Menpunkt '
nr'mit dieser Funktion das Repeatflag auf TRUE gesetzt, so wird
die entsprechende Funktion immer wieder aufgerufen, solange die F-Taste gedrckt
ist. Beim Setzen einens neuen Mens wird das Repeatflag wird auf den Default
FALSE gestellt.
-deselect()
Rckkehr von der vergrerten Darstellung zur Gesamtdarstellung
- control()
Aktivieren der Steuerfunktionen des aktiven Bildschirms
- start()
- stop()

Starten der SCREEN - Abarbeitung


Stoppen der SCREEN - Abarbeitung

- getapistring( ArgNumFlag, FullScreenFlag, ApiString)


Ermittlung der API-Result-Parameter fr den sichtbaren Bereich, bei
FullScreenFlag=TRUE fr den Gesamtscreen ; Voranstellung der Result-ParameterAnzahl mit Semikolon bei ArgNumFlag=TRUE, bei ArgNumFlag=FALSE nicht.
- togglelist(MultipleSelectFlag, ArgNumFlag, ApiToggleString)
Anzeige einer Listbox zur Anwahl von logischen Zeilen. Aufbau eines Strings mit den
API-Result-Parametern der angewhlten logischen Zeilen unter Voranstellung der
Result-Parameter-Anzahl mit Semikolon bei ArgNumFlag=TRUE, bei
ArgNumFlag=FALSE nicht.
Bei MultipleSelectFlag= FALSE kann nur eine logische Zeile ausgewhlt werde; bei
MultipleSelectFlag= TRUE mehrere.
- printscreen()

Copyright BMW AG. Ersteller Softing GmbH

Seite 46

INPA
Benutzerdokumentation

V 2.5

Ausdrucken des sichtbaren Bildschirmbereichs gem den Druckereinstellungen in


der Konfigurationsdatei
- setcolor(Vordergrund, Hintergrund)
Konfigurieren der Bildschirm- und Textfarbe, Farbnummern: 0=wei, 1=schwarz,
2=hellgrau, 3=grau, 4=leuchtend rot, 5=weinrot, 6=rotviolett, 7=rotlila, 8=leuchtend
gelb, 9=oliv, 10=leuchtend grn, 11=dunkelgrn, 12=hell trkis, 13=gedeckt trkis,
14=leuchtend blau, 15=blau
- printfile( FileName, PrinterName, PrinterPort)
Drucken der angegebenen Datei auf dem angegebenen Windows-Drucker
- Konvertierungsfunktionen
- realtostring( r, format, s);
wandelt eine Real-Zahl in einen String um
- stringtoreal( s , r );
wandelt einen String in eine Real-Zahl um.
Es gelten folgende Regeln:
s < Min-Real
->
r = Min-Real;
s > Max-Real
->
r = Max-Real;
s = abc
->
r = 0.0;
s = 123 456
->
r = 123.0;
s = 123.456.78
->
r = 123.456;
- inttostring( i, s);
wandelt einen Integer in String um
- stringtoint ( s, i )
wandelt einen String in einen Integer um.
Es gelten folgende Regeln:
s < Min-Integer
->
i = Min-Integer;
s > Max-Integer
->
i = Max-Integer;
s = abc
->
i = 0;
s = 123 456
->
i = 123;
s = 0x10
->
i = 16 ( Hexadezimal; max.4 Ziffern);
s = 010e2
->
i = 100 ;
s = "0y11110101
->
i = 245 (Binr; max. 16 Ziffern)
s = "0x8000"
->
i = -32768
s = "0xffe2"
->
i=0
s = "0y1111"
->
i=0
- inttoreal ( i, r )
wandelt einen Integer in eine Real-Zahl um
- realtoint ( r, i)
wandelt eine Real-Zahl in einen Integer um
Es gelten folgende Regeln:
r > Max-Integer
->
i = Max-Integer
r < Max-Integer
->
i = Min-Integer

Copyright BMW AG. Ersteller Softing GmbH

Seite 47

INPA
Benutzerdokumentation

V 2.5

- bytetoint ( c, i )
wandelt einen 8-Bit-Integer in einen 16-Bit-Integer um
- inttolong ( i, l )
wandelt einen 16-Bit-Integer in einen 32-Bit-Integer um
- longtoreal ( l, r )
wandelt einen 32-Bit-Integer in einen Fliekommawert um
- hexconvert( HexString, high, mid, low, seg);
zerlegt Hex String in Integer Werte
Es gilt fr alle Konvertierungsfunktionen:
Max-Integer
=
Min-integer
=
Max-Real
=
Min-Real
=
|Kleinster Wert| =

+32767;
-32768;
3.4E +38
-3.4E +38
3.4E-38

- Stringfunktionen
- strcat( DestStr, SrcStr1, SrcStr2);
Konkatenation von SrcStr1 und SrcStr2; das Ergebnis wird in DestStr abgelegt
- strlen( length, SrcStr);
liefert die Anzahl der Zeichen des bergebenen Strings SrcStr
- midstr( DestStr, SrcStr, Index, Count);
ab Position Index des Eingabestrings SrcStr wird die Anzahl Count von Characters im
Zielstring DestStr abgelegt.
- Dynamische Stringarrays:
- StrArrayCreate(out: bool rc, out: int hStrArray)
Erzeugen eines neuen leeren Stringarrays und Rckgabe der Handle dazu
- StrArrayDestroy( in: int hStrArray)
Freigeben des Stringarrays mit dem bergebenen Handle. Das Stringarray ist nach
dem Funktionsaufruf nicht mehr vorhanden.
- StrArrayWrite( in: int hStrArray, in: int index, in: string str)
Eintragen des bergebenen Strings in das Stringarray mit dem bergebenen Handle
unter dem angegebenen Index. Das Array wird in der Gre dem Index entsprechend
dynamisch verndert.

Copyright BMW AG. Ersteller Softing GmbH

Seite 48

INPA
Benutzerdokumentation

V 2.5

- StrArrayRead( in: int hStrArray, in: int index, out: string str)
Auslesen des Strings mit dem bergebenen Index aus dem Stringarray mit dem
bergebenen Handle. Bei Auslesen von nicht vorhandenen Elementen erfolgt eine
Fehlermeldung auf dem Bildschirm.
Anmerkung: Bei Lesen in Programmschleifen ist die aktuelle Gre des Arrays vor
dem Lesevorgang vom Anwender mit der Funktion StrArrayGetElementCount(...) zu
ermitteln.
- StrArrayGetElementCount( in: int hStrArray, out: int ElementCount)
Rckgabe der Anzahl der im Stringarray mit dem bergebenen Handle enthaltenen
Elemente
- StrArrayDelete( in: int hStrArray)
Lschen des Stringarrays mit dem bergebenen Handle. Das Stringarray ist nach dem
Funktionsaufruf noch vorhanden, alle enthaltenen Elemente wurden gelscht und der
dadurch belegte Speicher freigegeben.

- Eingabefunktionen
Allgemeines: Alle Funktionen zur Eingabe von Zahlenwerten bieten den Inhalt der jeweiligen
Ausgangsvariable als Defaultwert an, sofern dieser innerhalb der angegebenen Grenzwerte liegt. Liegt
er auerhalb der Grenzwerte, so wird kein Defaultwert angezeigt. Die Rckgabe der HEX-Werte erfolgt
als String mit vorangestelltem "0x".
- getinputstate( InputState)
Rckgabe des intern gespeicherten Eingabestatus, der Aufschlu ber die Art der
Beendigung von Eingabefunktionen gibt. Der Eingabestatus kann folgende Werte
annehmen:
0 - Eingabe wurde mit OK beendet
1 - Eingabe wurde mit Abbruch beendet
2 - es wurde bisher noch keine Eingabefunktion aufgerufen
- inputtext( Variable, Titel, Text)
Eingabe eines Textes in einer Dialogbox mit angegebem Titel und Hinweistext in die
angegebene Textvariable
- inputnum( Variable, Titel, Text, MinWert, MaxWert)
Eingabe einer numerischen Gre in einer Dialogbox mit angegebenem Titel und
Hinweistext in die angegebene numerische Variable. Plausibilittsprfung der Eingabe
(Bereich zwischen MinWert .. MaxWert).
- inputint( Variable, Titel, Text, MinWert, MaxWert)
Eingabe einer dezimalen integer-Gre in einer Dialogbox mit angegebenem Titel und
Hinweistext in die angegebene Textvariable. Plausibilittsprfung der Eingabe (Bereich
zwischen MinWert .. MaxWert).

Copyright BMW AG. Ersteller Softing GmbH

Seite 49

INPA
Benutzerdokumentation

V 2.5

- inputhex( Variable, Titel, Text, MinWert, MaxWert)


Eingabe einer hexadezimalen Gre in einer Dialogbox mit angegebenem Titel und
Hinweistext in die angegebene Textvariable. Plausibilittsprfung der Eingabe (Bereich
zwischen MinWert .. MaxWert).
- input2text( Variable1, Variable2, Titel, Text, Text1, Text2)
Eingabe zweier Texte in einer Dialogbox mit angegebenem Titel, Hinweistext und
Textfeld vor jedem Eingabefeld in die angegebenen Textvariablen
- input2hexnum( hex_Var, num_Var, Titel, Text, Text1, Text2, MinWert1, MaxWert1,
MinWert2, MaxWert2)
Eingabe einer hexadezimalen und einer numerischen Gre in einer Dialogbox mit
angegebenem Titel, Hinweistext und Textfeld vor jedem Eingabefeld in die
angegebene Textvariable (hexadezimal) und numerische Variable.Plausibilittsprfung
der Eingaben (Bereich jeweils zwischen MinWertx .. MaxWertx).
- input2int( Var1, Var2, Titel, Text, Text1, Text2, MinWert1, MaxWert1, MinWert2,
MaxWert2)
Eingabe von zweier dezimalen integer-Gren in einer Dialogbox mit angegebenem
Titel, Hinweistext und Textfeld vor jedem Eingabefeld in die angegebene Variable.
Plausibilittsprfung der Eingaben (Bereich jeweils zwischen MinWertx .. MaxWertx).
- input2hex( hex_Var1, hex_Var2, Titel, Text, Text1, Text2, MinWert1, MaxWert1, MinWert2,
MaxWert2)
Eingabe zweier hexadezimalen Gren in einer Dialogbox mit angegebenem Titel,
Hinweistext und Textfeld vor jedem Eingabefeld in die angegebene Textvariablen.
Plausibilittsprfung der Eingaben (Bereich jeweils zwischen MinWertx .. MaxWertx).
- inputdigital( Variable, Titel, Text, FalschText, Wahrtext)
Eingabe einer digitalen Gre in einer Dialogbox mit angegebem Titel, Hinweistext
und Texten fr WAHR- und FALSCH-Fall in die angegebene Digitalvariable.
- Ausgabefunktionen
- text( Zeile, Spalte, Text)
Ausgabe des Texts in der angegebenen Zeile und Spalte
- textout( Variable, Zeile, Spalte)
Ausgabe des in der angegebenen Textvariablen enthaltenen Texts in der
angegebenen Zeile und Spalte

Copyright BMW AG. Ersteller Softing GmbH

Seite 50

INPA
Benutzerdokumentation

V 2.5

- ftextout(text, row, col, textsize, textattr )


Formatierte Textausgabe des bergebenen Textes in der entsprechenden Zeile und
Spalte des aktiven Screens mit der angegeben Schriftgre und Textattribute.
Mgliche Schriftgren:
0 - normal
1 - mittelgro
2 - gro
Mgliche Textattribute (knnen ber logische Veroderung kombiniert werden):
0 - Normalschrift (keine Textattribute)
1 - fett
2 - kursiv
4 - unterstrichen
- digitalout( Variable, Zeile, Spalte, Falschtext, Wahrtext)
Ausgabe des in der angegebenen Digitalvariablen enthaltenen Texts in der
angegebenen Zeile und Spalte. Die Ausgabe erfolgt in Form eines Kreises fr den
Falschzustand und in Form eines Punktes fr den Wahrzustand. Hinter dem Symbol
wird der angegebene Zustandstext (Wahrzustand/Falschzustand) ausgegeben.
- analogout( Variable, Zeile, Spalte, Min, Max, MinGltig, MaxGltig, Format)
Ausgabe des in der angegebenen Numerikvariablen enthaltenen Werts in der
angegebenen Zeile und Spalte. Die Ausgabe erfolgt in Form eines Balken mit rot
hinterlegtem ungltigem Bereich und grn hinterlegtem gltigem Bereich. Neben dem
Balken wird der Wert als Zahlenwert ausgegeben. ber den Format-Parameter
knnen die Vorkommastellen und Nachkommastellen durch <Weite>.<Nachkommastellen>" angegeben werden (z.B. "4.2"), das Defaultformat wird durch Angabe
eines Leerstrings "" eingestellt.
- multianalogout( Variable, Zeile, Spalte, Min, Max, MinGltig, MaxGltig, Format, mode)
Ausgabe des in der angegebenen Numerikvariablen enthaltenen Werts analog zu der
Funktion '
analogout'( mode != 1). Ist der Parameter '
mode'== 1, so wird anstelle des
Balkens ein Dreieick als Werteanzeiger ausgegeben und die Nulllinie angezeigt.
- hexdump( StartAdresse, AnzahlZeilen, Zeile, Spalte)
Ausgabe eines Hexdump mit AnzahlZeilen Zeilen ab der Adresse StartAdresse in der
angegebenen Zeile und Spalte.
- ftextclear( text, row, col, textsize, textattr )
Lschen des mit der Funktion "ftextout" ausgegebenen Textes in der entsprechenden
Zeile und Spalte des aktiven Screens mit der angegeben Schriftgre und
Textattribute; der zu lschende Bildschirmbereich wird in Abhngigkeit von den
bergebenen Parametern berechnet.
- clearrect( row, col, height, width)
Lschen des rechteckigen Screen-Bereichs mit den angegebenen Koordinaten
- blankscreen()
Lschen des Bildschirmes

Copyright BMW AG. Ersteller Softing GmbH

Seite 51

INPA
Benutzerdokumentation

V 2.5

- messagebox( Titel, Text)


Ausgabe eines Hinweistextes in einer Dialogbox mit angegebenem Titel.
- infobox( Titel, Text)
Ausgabe eines Informationstextes in einer Dialogbox mit angegebenem Titel.
- Dateizugriffsfunktionen
- fileopen(Datei, Modus)
ffnen einer Datei im angegebenen Modus:
"w" = Anlegen einer neuen Datei; falls Datei bereits vorhanden, Datei lschen
"a" = Anfgen an bereits vorhandene Datei; falls Datei noch nicht vorhanden, neue
Datei anlegen
r= Datei zum Lesen ffnen.
- fileclose()
Datei schlieen
- filewrite(String)
angegebenen String am Ende der zum Schreiben geffneten Datei anfgen; nach
jedem filewrite wird ein CRLF eingefgt
- fileread( String, Bool)
Aus einer zum Lesen geffneten Datei den String einlesen. Es wird jeweils eine Zeile
bis LF gelesen; CR-Steuersequenzen werden berlesen. Am Ende einer Datei wird
der Parameter Bool = wahr (EOF).
- Userboxfunktionen
- userboxopen( Box_Nummer, Zeile, Spalte, Anzahl Zeilen, Anzahl Spalten, Titel, Text)
ffnen einer Dialogbox mit der zugeordneten Box_Nummer [0..11], an der
angegebenen Bildschirmstelle (Zeile,Spalte) und den angegebenen Dimensionen
(Anzahl Zeilen, Anzahl Spalten) mit angegebenem Titel und Text. Die Box_Nummer
und der Titel haben Auswirkungen auf den Rahmen der Dialogbox:
Box_Nummer 0 bis 3, mit Titel: Rahmen fett
Box_Nummer 0 bis 3, ohne Titel: Rahmen normal
Box_Nummer 4 bis 7, mit und ohne Titel: Rahmen normal
Box_Nummer 8 bis 11, mit Titel: Rahmen normal
Box_Nummer 8 bis 11, ohne Titel: kein Rahmen
- userboxclose( Nummer)
Schlieen der Userbox mit der angegebenen Nummer

Copyright BMW AG. Ersteller Softing GmbH

Seite 52

INPA
Benutzerdokumentation

V 2.5

- userboxftextout( BoxNum, text, row, col, textsize, textattr )


Formatierte Textausgabe des bergebenen Textes in der entsprechenden Zeile und
Spalte der UserBox mit Nummer BoxNum mit der angegeben Schriftgre und
Textattribute
Mgliche Schriftgren:
0 - normal
1 - mittelgro
2 - gro
Mgliche Textattribute:
0
Normalschrift (keine Textattribute)
1
fett
2
kursiv
4
unterstrichen
8
vertikal zentriert, Zeilenargument ist Dummy
16
horizontal zentriert, Spaltenargument ist Dummy
Die Attribute sind kombinierbar. Bei Verwendung der Zentrierungsattribute sind
die entsprechenden Zeilen- bzw. Spaltenparameter Dummywerte, d.h. ohne
Funktion, da die Zentrierungsfunktion die realen Zeilen-/Spalten- werte automatisch
berechnet.
- userboxclear( BoxNum)
Lschen des Inhalts der Userbox mit der angegebenen Nummer
- userboxsetcolor( BoxNum, Vordergrund, Hintergrund)
Konfigurieren der Vorder- und Hintergrundfarbe in einer Userbox, Farbnummern:
0=wei, 1=schwarz, 2=hellgrau, 3=grau, 4=leuchtend rot, 5=weinrot, 6=rotviolett,
7=rotlila, 8=leuchtend gelb, 9=oliv, 10=leuchtend grn, 11=dunkelgrn, 12=hell trkis,
13=gedeckt trkis, 14=leuchtend blau, 15=blau
- Schnittstellenfunktionen zu Windows
- winhelp(helpfile)
Aufruf der Windows-Hilfefunktion zur Darstellung der angegebenen Hilfedatei
- winhelpkey(helpfile, key)
Aufruf der Windows-Hilfefunktion zur Darstellung der angegebenen Hilfedatei mit dem
bergebenen Schlsselwort
- callwin(filename)
windows Aufruf
- Speichermanipulationsroutinen
- CreateStructure( handle, length)
Erzeugen eines Speicherbereichs mit der gegebenen Lnge und Rckgabe des
zugehrigen Handles. '
handle'ist dabei ein Zeiger auf einen Speicherbereich von
Windows. Besonderheit: das Handle '
0'wird von INPA selbst angelegt und bleibt bis
zum Beenden von INPA gltig.
- SetStructureMode( ReadWrite )
Setzen des Zugriffsmodus bei den folgenden Strukturfunktionen

Copyright BMW AG. Ersteller Softing GmbH

Seite 53

INPA
Benutzerdokumentation

V 2.5

- StructureByte( handle, at, value )


Lesen / Setzten eines Bytes an der Stelle at des Speicherbereichs handle
- StructureInt( handle, at, value )
Lesen / setzen eines int- Wertes an der Stelle at des Speicherbereichs handle
- StructureLong( handle, at, value )
Lesen / setzen eines long-Integers an der Stelle at des Speicherbereichs handle
- StructureString( handle, at, length, value )
Lesen / setzen eines Strings an der Stelle at des Speicherbereichs handle mit der
max. Lnge length.
- Fileviewer-Funktionen
- viewopen( datei, fenstertitel )
ffnen der angegebenen Datei und Anzeige durch den Fileviewer
Im Fileviewer (INPA-Funktion "viewopen") kann in Protokollen der Funktion
INPAapiFsLesen ber die Tastenkombination <SHIFT + LINEUP> von einem Fehler
zum nchsten und ber die Kombination <SHIFT + LINEDOWN> zum
vorhergehenden Fehler geblttert werden.
- viewclose()
Schlieen des Fileviewers und der angezeigten Datei

- EDIABAS - Funktionen mit Fehlerbehandlung durch INPA


- INPAapiInit()
apiInit-Aufruf
- INPAapiEnd()
apiEnd-Aufruf
- INPAapiJob( ecu, job, para, result)
apiJob-Aufruf
- INPAapiResultText( Textvar, abzufrag. Ergebnis, Ergebnissatz, Format zur Konvertierung)
apiResultText-Aufruf mit Ablage des Ergebnisses in der angegebenen Textvariable
- INPAapiResultDigital( Digitalvariablen, abzufragendes Ergebnis, Ergebnissatz)
apiResultInt-Aufruf und Ablage des Ergebnisses in der angegebenen Digitalvariable
(bool)
- INPAapiResultInt( Wert der Variablen, abzufragendes Ergebnis, Ergebnissatz)
apiResultInt-Aufruf und Ablage des Ergebnisses in der angegebenen Variablen
- INPAapiResultSets(ErgVar)
apiResultSets Aufruf; die Anzahl der Ergebnisstze wird in ErgVar zur Verfgung
gestellt

Copyright BMW AG. Ersteller Softing GmbH

Seite 54

INPA
Benutzerdokumentation

V 2.5

- INPAapiResultAnalog( Analogvariablen, abzufragendes Ergebnis, Ergebnissatz)


apiResultReal-Aufruf und Ablage des Ergebnisses in der angegebenen Analogvariable
(real)
- INPAapiResultBinary( Resultstring, Ergebnissatz)
apiResultBinary Aufruf mit Resultstring und Ergebnissatz; die vom EDIABAS
angelieferten Daten werden in einem Binrdatenpuffer abgelegt, der ber die Funktion
hexdump (...) ausgegeben werden kann
- INPAapiCheckJobStatus( OKAY-Text)
apiResultText-Abfrage von "JOB_STATUS" im Ergebnissatz 1 und berprfung des
Ergebnistextes mit dem bergebenen OKAY-Text. Bei Unterschied Aktivierung einer
Messagebox mit Angabe des gelesenen Job-Status und Stoppen der zyklischen
Bearbeitung
- INPAapiFsLesen( ecu, datei)
Fehlerspeicherlesen fr das angegebene Steuergert ecu und Ablage in der Datei mit
angegebenem Dateinamen.
- INPAapiFsLesen2( ecu, datei)
Wie INPAapiFsLesen, jedoch hat diese Funktion ein anderes Ausgabeformat und
kann den FsMode = 0x40 nicht interpretieren.
- INPAapiFsMode( FsMode, FsFileMode, PreInfoFile, PostInfoFile, ApiFsJobName)
Einstellen der Arbeitsweise der Funktionen INPAapiFsLesen(...) und
INPAapiFsLesen2(...). Die Einstellungen bleiben whrend der Abarbeitung eines
Scripts erhalten, bei Scriptwechsel werden Defaultwerte automatisch eingestellt.
Parameter:
FsMode - bitcodierter Wert zur selektiven Anzeige der Detailinformationen
im Fehlerprotokoll
Maske 0x01 = Anzeigen der Fehlerorte wenn gesetzt
Maske 0x02 = Anzeigen der Umweltbedingungen
Maske 0x04 = Anzeigen der Fehlerarten wenn gesetzt
Maske 0x08 = Anzeigen des Umweltwertes wenn gesetzt
(kombiniert mit 0x02)
Maske 0x10 = Anzeigen der Umwelteinheit wenn gesetzt
(kombiniert mit 0x02)
Maske 0x20 = Anzeige der Fehlerhufigkeit wenn gesetzt
Maske 0x40 = Anzeige der FehlerHexCodes
(nurINPAapiFsLesen)
Maske 0x80 = Anzeige von Hinweistexten wenn gesetzt
Defaultwert: 0xFF = alles anzeigen
Hinweis:

Die Masken 0x08 und 0x10 liefern nur in Kombination mit


Maske 0x02 Ergebnisse !!!!!

Copyright BMW AG. Ersteller Softing GmbH

Seite 55

INPA
Benutzerdokumentation

V 2.5

FsFileMode - Parameter zur Steuerung der Fehlerprotokollierung beim Aufruf


der Funktion INPAapiFsLesen(...):
Wert "w" = Neuerzeugen des Fehlerprotokolls beim Aufruf der
Funktion INPAapiFsLesen(...)
Wert "a" = Anhngen ("append") des Fehlerprotokolls an ein
bestehendes.
Defaultwert: "w" = Fehlerprotokoll immer neu anlegen
PreInfoFile -

Name des Files, das VOR der Detailinformation ins


Fehlerprotokoll eingefgt wird; bergabe eines Leerstrings "",
wenn kein File eingefgt werden soll.
Defaultwert: "" = kein File einfgen

PostInfoFile -

Name des Files, das NACH der Detailinformation ins


Fehlerprotokoll eingefgt wird; bergabe eines Leerstrings "",
wenn kein File eingefgt werden soll
Defaultwert: "" = kein File einfgen

ApiFsJobName - Namen des API-Jobs zum Fehlerspeicher lesen


ApiFsJobName = "" : Defaultname "FS_LESEN" wird
verwendet ApiFsJobName = "<name>" : Der angegebene
Name wird verwendet. Bei der Angabe von IS_LESEN wird
als Protokollberschrift S H A D O W S P E I C H E R L E S
E N ausgegeben, ansonsten F E H L E R S P E I C H E R L
E S E N

- EDIABAS - Direktanbindung ohne Fehlerbehandlung


-INP1apiInit(result)
apiInit-Aufruf; result gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
-INP1apiEnd()
apiEnd-Aufruf
- INP1apiJob( ecu, job, para, result)
apiJob-Aufruf; result gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
- INP1apiState( Apistate)
apiState-Aufruf, Abfrage zum Zustand des zuletzt abgesetzten api-Aufrufs
- INP1apiResultText( result, Textvar, abzufrag. Ergebnis, Ergebnissatz, Format zur
Konvertierung)
apiResultText-Aufruf mit Ablegen des Ergebnisses in der angegebenen Textvariable;
result gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
- INP1apiResultInt( result, Wert der Variablen, abzufragendes Ergebnis, Ergebnissatz)
apiResultInt-Aufruf und Ablage des Ergebnisses in der angegebenen Variablen; result
gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
- INP1apiResultSets(result, Ergebnissatz)

Copyright BMW AG. Ersteller Softing GmbH

Seite 56

INPA
Benutzerdokumentation

V 2.5

apiResultSets Aufruf; die Anzahl der Ergebnisstze wird in ErgVar zur Verfgung
gestellt; result gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
- INP1apiResultReal( result, Wert der Variablen, abzufragendes Ergebnis, Ergebnissatz)
apiResultInt-Aufruf und Ablage des Ergebnisses in der angegebenen Variablen; result
gibt an, ob der Aufruf erfolgreich durchgefhrt werden konnte
- INP1apiResultBinary(result, Ergebnisstring, Ergebnissatz)
apiResultBinary Aufruf mit Ergebnisstring und Ergebnissatz; die vom EDIABAS
angelieferten Daten werden in einem Binrdatenpuffer abgelegt, der ber die Funktion
hexdump (...) ausgegeben werden kann; result gibt an, ob der Aufruf erfolgreich
durchgefhrt werden konnte
- INP1apiErrorCode(Errorcode)
Ermittlung des aktuellen api-Fehlercodes
- INP1apiErrorText(Errortext)
Ermittlung des aktuellen api-Fehlertextes
- GetBinaryDataString( DataString, DataStringLen);
Rckgabe des Pufferinhalts von EDIABAS-Binrdaten als Hexadezimal-String. Der
String enthlt fr jedes Datenbyte zwei Zeichen. Zurckgegeben werden der String
und dessen Lnge.
- PEM - Aufrufe
- PEMInitialisiere ( Result, WinEldiVersion, Pruefstand, RechnerNr);
Initialisieren des PEM mit Setup Daten
- PEMProtokollKopf ( Result, Jobtabelle, JAT_Version, Datum, Zeit, FzgTyp, FgNr);
Protokollkopf auf temp. Datei
- PEMProtokollZeile ( Result, Zeile);
einzeiliges Leerformular auf temp. Datei
- PEMSGZ_Kopfzeile( Result, SGVar, LogUnit, ZeilenSG);
berschrift einer JAT Zeileauf temp. Datei
- PEMTrennLinie( Result);
Formular Trennlinie auf temp. Datei
- PEMEndLinie( Result);
Formular Endlinie auf temp. Datei
- PEMLoescheTabZeilenPuffer( Result);
wenn JAT Zeile i.O. temp. JAT Zeilen Datei lschen
- PEMUebertrageTabZeilenPuffer( Result);
wenn JAT Zeile n.i.O. temp. JAT Zeilen Datei an temp. Datei anfgen
- PEMProtokollAusgabe( Result);
temp Prot. Datei auf Prot Drucker

Copyright BMW AG. Ersteller Softing GmbH

Seite 57

INPA
Benutzerdokumentation

V 2.5

- PEMDruckeEtikett( Result, Datum, Zeit);


mit Daten belegtes Etikett auf Drucker
- PEMPrintFormular( Result, FormularName);
Formular drucken
- PEMPrinter_ff( Result);
Formular Seiten Vorschub
- PEMLoad_formular( Result, FileName, FormularName);
Formularvorlage laden
- PEMForget_formular( Result, FormularName);
geladene Formularvorlage vergessen
- DTM-Aufrufe (nur verfgbar bei Aufruf von INPA aus WinEldi heraus, ab Version 5.0.0 nicht mehr
untersttzt):
Bei Aufrufen, die Werte zurckgeben, wird jeweils ein Leerstring zurckgegeben, wenn das
Suchkriterium nicht erfllt wurde.
- DTMFindLogUnit (out: bool rc, in: string LogUnit)
Suchen der bergebenen LogUnit in der Datentabelle und Rckgabe des Ergebnisses
rc
- DTMGetSGVar (out: string SGVar, in: string SGArt)
Ermitteln der SGVariante zur bergebenen SGArt
- DTMGetSGArt (out: string SGArt, in: string SGVar)
Ermitteln der SGArt zur bergebenen SGVariante
- DTMGetVarWert (out: string VarWert, in: string VarName)
Rckgabe des Wertes der bergebenen Variable
- DTMSetupGetVarWert (out: string VarWert, in: string VarName)
Rckgabe des Wertes der bergebenen Setup-Variable
- DTMSetupGetStartPosition ()
Setzen der Suchposition auf den Anfang der Datentabelle mit den Setup-Variablen
- DTMSetupGetNextAssoc ( out: bool rc, inout: string VarName, inout: string VarWert)
Rckgabe der Daten des aktuellen Tabelleneintrags, d.h. Name und Wert der SetupVariable, und Positionieren auf den nchsten Tabelleneintrag. Ist das Tabellenende
erreicht und enthlt der aktuelle Tabelleneintrag somit keine Daten mehr, wird das
Ergebnis FALSE zurckgeliefert.
- DTMLogUnitEintragen (in: string LogUnit);
Trgt eine logische Einheit in die Tabelle ein
- DTMSGEintragen (in: string SGArt, in: string SGVar);
Trgt ein Steuergert in die Tabelle ein

Copyright BMW AG. Ersteller Softing GmbH

Seite 58

INPA
Benutzerdokumentation

V 2.5

- DTMLoescheAuftrag ();
Lscht einen Auftrag aus der Tabelle
- DTMVariableEintragen (in: string VarName, in: string VarWert);
Trgt eine Variable in die Tabelle ein
- DTMVariableLoeschen (out: bool rc, in: string VarName);
Lscht eine Variable aus der Tabelle und gibt das Ergebnis zurck
- DTMLoescheAlleVariablen ();
Lscht alle Variablen aus der Tabelle
- DTMSetupVariableEintragen (in: string VarName, in: string VarWert);
Trgt eine Variable in die Tabelle ein
- DTMSetupVariableLoeschen (out: bool rc, in: string VarName);
Lscht eine Variable aus der Tabelle und gibt das Ergebnis zurck

- RK512-Funktionen (ab Version 5.0.0 nicht mehr untersttzt):


- SPSEnd (out: int komstatus)
Beenden der SPS
- SPSInit (out: int komstatus, in: string device, in: string file, in: int count, in: int msgbox);
Initialisieren der SPS
- SPSLeseVakWerte ( out: int komstatus, out: int check, out: real vakuum1, out: real
vakuum2);
Auslesen der Vakuumwerte
- SPSLeseVonSPS ( out: int komstatus, out: int spsstatus,
out: int check, out: real vakuum1, out: real vakuum2);
Lesen der SPS und der Vakuumwerte und Bewertung
- SPSSendeAnSPS ( out: int komstatus, in: int fehler, in : int sg);
Senden des Fehlerbytes und des Steuergertes
- ApiJobFsLesenFAB ( out: int rc, in: string sgvar, out: int edifehler,
out: string jobstatus,out: int fehler, out: int saetze);
Fehlerspeicher-Lesen mit Fehlerausblendung
- ApiResultFsLesenFAB ( out: int rc, out: int ausgeblendet, in: int satz);
Gibt zu jedem Fehler an, ob er ausgeblendet ist

Copyright BMW AG. Ersteller Softing GmbH

Seite 59

INPA
Benutzerdokumentation

V 2.5

- WINELDI-Funktion (en) (ab Version 5.0.0 nicht mehr untersttzt):


- ELDIOpenStartDialog ( in: string CommandParameter, out: int ResultCode )
Starten des ELDI/3 Eingangshandlerdialogs.
WARNUNG!
Vor dem Aufruf des Eingangshandlers werden alle Auftragsdaten im DTM gelscht;
insbesondere beim Ablauf unter WINELDI kann das zu fehlerhaften Prfungen und
Prfungsabbruch fhren.

Copyright BMW AG. Ersteller Softing GmbH

Seite 60

INPA
Benutzerdokumentation

V 2.5

6 Softwarestruktur
Die Software des Interpreters fr Prfablufe ist in mehreren Schichten realisiert. Als oberste Schicht
fungiert die Windows-Benutzerschnittstelle. Sie stellt das Hauptfenster und einige Childfenster fr
INPA bereit und verteilt die eingehenden Windows-Messages (Mouseereignisse, Tastaturereignisse,
...) an die darunterliegenden Softwareschichten. Auerdem wird ber diese Schicht der Startup des
Systems, die globale Ablaufsteuerung whrend der Laufzeit und das ordnungsgeme Beenden des
Programmes gesteuert.
Die Abarbeitung von Prfablaufbeschreibungsdateien zur Laufzeit erfolgt gem dem folgenden
Schema:

(1) Start des Systems mit bersetzen und Interpretieren eines Startup-Scripts; die zur Auswahl
stehenden Prfablaufbeschreibungsdateien werden im Startup- Script konfiguriert
(2) Auswahl einer zu interpretierenden Prfablaufbeschreibungsdatei
(3) bersetzen und Interpretieren der ausgewhlten Datei
(4) Beenden des Prfablaufs und Rckkehr zum Startup-Script
(5) mit (2) neuen Prfablauf starten oder System benden

INPALocalizationSupportDLLs

Abbildung 5: Softwarestruktur von INPA

Copyright BMW AG. Ersteller Softing GmbH

Seite 61

INPA
Benutzerdokumentation

V 2.5

Die Struktur von INPA lt sich grob in zwei Teile gliedern:


1. der bersetzer, der die INPA-Datei zu ablauffhigem Code und in die zur Laufzeit bentigten
Daten und Objekte bersetzt
2. das Laufzeitsystem, das den erzeugten Code interpretiert und dabei auf die erzeugten Daten und
Objekte zugreift
Als Schnittstelle zwischen den beiden Teilen dient die Objekt- und Datenverwaltung, mit deren Hilfe
der erzeugte Code, die Daten und Objekte verwaltet werden.
Die Aufgaben der einzelnen Softwareteile werden im folgenden nher beschrieben.

6.1 Parser
Der Parser fhrt die syntaktische und semantische Sprachanalyse der zu bersetzenden INPA-Datei
gem der INPA-Sprachdefinition durch. Die lexikalische Analyse der Scriptdatei mit Tokenisierung
und Ausblendung der Kommentare wird hierbei mit Hilfe des Scanners vorgenommen. Whrend des
bersetzungsvorganges erzeugt der Parser entsprechende Symbole mit Hilfe der
Symboltabellenverwaltung. Sie stellt dem Parser Funktionen zum Erzeugen, Lschen, Suchen,...
globaler und lokaler Symbole zur Verfgung und fhrt die eigentliche Symbol-Datenhaltung (Symbole
einschlielich symbolspezifischer Information) durch. Die Symbole werden nach Beendigung des
bersetzungsvorgangs nicht mehr bentigt und daher wieder gelscht.
INPA erzeugt keinen ausschlielich linearen Programmcode sondern arbeitet objektorientiert. Es gibt
folgende INPA-Objekttypen:

SCREEN
MENU
STATEMACHINE
LOGTABLE

Die Datenstruktur der Objekte ist problemorientiert und deckt sich mit der in der Sprachdefinition
beschriebenen Form der SCREEN-, MENU-, STATEMACHINE- und LOGTABLE-Konstrukte. Neben
den reinen Daten enthalten die Objekte Verwaltungsfunktionen und Methoden, d.h. Funktionen, die
sich an den speziellen Anforderungen an die Objekte orientieren (z.B. vergrerte
Bildschirmdarstellung und Scrolling bei SCREEN-Objekten). Die INPA-Objekte sind in Form von C++Klassen realisiert.
Die Objekte werden whrend des bersetzungsvorgangs vom Parser mit Hilfe der Objektverwaltung
dynamisch erzeugt (z.B. fr jedes MENU des Anwenders ein MENU-Objekt). Der objektbezogene
Code des Anwenders (z.B. Aktionen pro Funktionstaste) wird als linearer Programmcode (Codeliste) in
den Objekten abgelegt (z.B. eine Codeliste pro belegte Funktionstaste). Hierbei wird weitgehend vom
Prinzip des "information hiding" Gebrauch gemacht (Bsp: die Objektverwaltung kennt nicht den Aufbau
der Codelisten).
Der Code der Anwenderfunktionen wird in je einer Codeliste gespeichert, die vom Objektverwalter
direkt verwaltet wird.
Der Code der in den Objekten abgelegten Codelisten wird whrend des bersetzungsvorganges vom
Codegenerator dynamisch erzeugt. Der Codegenerator stellt dem Parser hierzu Funktionen zum
Erzeugen neuer,leerer Codelisten, zur Erzeugung von Code und zum Zugriff auf Codelisten zur
Verfgung.
Beim erzeugten Code handelt es sich um Code fr eine einfache Stackmaschine.

Copyright BMW AG. Ersteller Softing GmbH

Seite 62

INPA
Benutzerdokumentation

V 2.5

Die zur Laufzeit bentigten Daten werden vom Parser whrend des bersetzungsvorganges mit Hilfe
der Datenverwaltung erzeugt

6.2 Datenverwaltung
Die Datenverwaltung fhrt die Datenhaltung aller globalen, konstanten und lokalen Daten durch. Die
lokalen Daten werden fr jeden Objekttyp getrennt verwaltet, damit ein Umschalten im Ablauf zwischen
den Objekttypen whrend der Laufzeit gewhrleistet ist (Bsp: Tastendruck whrend SCREENAbarbeitung).
Die Datenverwaltung stellt nach auen einige Schnittstellenfunktionen zum Datenzugriff zur Verfgung:

Funktionen zum Erzeugen und Lschen globaler, konstanter und lokaler Daten
Elementare Datenoperationen whrend der Laufzeit (PUSH, POP, ...)
Zugriffsfunktionen zu Funktionsparametern fr Bibliotheksfunktionen

6.3 Objektverwaltung
Die Objektverwaltung fhrt die Datenhaltung der dynamisch erzeugten INPA-Objekte (s.o.) sowie die
Ablaufsteuerung und Koordination der Objektaktionen whrend der Laufzeit durch. Hierzu stellt sie
nach auen Funktionen mit folgenden Aufgaben zur Verfgung:
1.
2.
3.
4.
5.
6.

Erzeugen und Lschen von INPA-Objekten


Setzen von Objektparametern (Initialisierung)
Aktivierung/Deaktivierung von Objekten
Aktivierung/Deaktivierung von Codelisten der Objekte
Scheduling des Objektablaufs zur Laufzeit:
Verwaltung eines Objektstacks fr verschachtelte Aktivierung von Sub-Objekten (verwendet bei
Statemachines)

Die Funktionen zur Objekterzeugung (1.) und Initialisierung


bersetzungsphase verwendet, die brigen Funktionen zur Laufzeit.

(2.)

werden

whrend

der

Der Scheduler der Objektverwaltung wird zur Laufzeit stndig getriggert und sorgt fr die Koordination
der aktiven INPA-Objekte und der Interpretation ihrer Codelisten. Er hat folgende Aufgaben:

round-robin-Scheduling der SCREEN- und STATEMACHINE-Objekte


bevorzugte Behandlung von Funktionstastenaktionen
bergabe von Codelisten der Objekte an den Interpreter
Aktivierung der Codelisten-Interpretation

6.4 Interpreter
Die von INPA verwendeten Codelisten enthalten Programmcode fr eine einfache Stackmaschine mit
Mglichkeiten der Datenmanipulation (PUSH, POP, ALU-Operationen,...) und Programmverzweigung
(JUMP, JUMPNZ, CALL, ...). Der Interpreter realisiert diese Maschine und ist fr die sequentielle
Interpretation der bergebenen Codelisten zustndig. Bei der Ausfhrung des zu interpretierenden
Codes greift er bei Stack-Datenmanipulationen (PUSH,POP,...) auf Funktionen der Datenverwaltung

Copyright BMW AG. Ersteller Softing GmbH

Seite 63

INPA
Benutzerdokumentation

V 2.5

zurck. Programmverzweigungen innerhalb derselben Codeliste (JUMP) sowie ALU-Funktionen


werden direkt vom Interpreter behandelt.
Bei Funktionsaufrufen wird zwischen Anwender- und Bibliotheksfunktionen unterschieden:
Anwenderfunktionen bestehen aus einer einzigen Codeliste; der Aufruf einer Anwenderfunktion wird
durch einen Codelistenwechsel realisiert. Aufrufe von Bibliotheksfunktionen erfolgen ber Pointer.

6.5 Libraryfunktionen und externe DLLs


Die Bibliotheksfunktionen sind fester Bestandteil von INPA. Sie sind hart codierte C++-Funktionen, die
aus INPA-Scriptdateien heraus mit mglichen Ein-/Ausgangsparametern aufgerufen werden knnen.
Die Bibliotheksfunktionen lassen sich in folgende Gruppen aufteilen:

normale Bibliotheksfunktionen (z.B. Textausgabe)


systembezogene Bibliotheksfunktionen, z.T. mit Ablaufbeeinflussung (z.B. Timer)
Schnittstelle zu externen DLLs (z.B. EDIABAS). Diese Anbindungen stellen entweder eine 1:1Funktionsanbindung zur Verfgung oder enthalten bereits zustzliche Mechanismen (z.B.
Fehlerbehandlung und -meldung) zur Entlastung des Anwenders

6.6 INPA-Localization-Support-DLLs
Die Untersttzung der Mehrsprachlichkeit erfolgt ber Stringtables, welche in je eine INPALocalization-Support-DLL pro Landessprache eingebunden sind. Die Auswahl der Landessprache
erfolgt ber einen Eintrag in der Konfigurationsdatei (s.o.). Nach dem Programmstart wird dieser
Eintrag ausgewertet und die dazugehrige DLL dynamisch geladen. Alle von der Landessprache
abhngigen Texte werden ber Zugriffsfunktionen aus der DLL geladen und temporr gepuffert.
INPA V5.0.x untersttzt deutsche und englische Landessprache.

6.7 Verwendete Entwicklungstools

MS Developer Studio V6.0 (C++)


MFC-Classes aus MSVC
MKS LEX/YACC mit C++-Anpassung
Windows SDK

Copyright BMW AG. Ersteller Softing GmbH

Seite 64

INPA
Benutzerdokumentation

V 2.5

7 Anhang A Sprachdefinition
program:
{ pragma }
| { include }
| { ext_func_declaration }
| { ext_libcall_decl }
| { g-data-definition }
| { definition }
pragma:
"#pragma" identifier
include:
"#include" string_constant
ext_func_declaration:
"extern" func_dec ";"
ext_libcall_decl:
"import" "pascal" ext_libcall_heading ";"
"import" "\"C\"" ext_libcall_heading ";"
"import" ext_libcall_heading ";"
"import32" "pascal" ext_libcall_heading ";"
"import32" "\"C\"" ext_libcall_heading ";"
"import32" ext_libcall_heading ";"
ext_libcall_heading:
ext_lib_spec func_dec
ext_lib_spec:
"lib" string-constant
definition:
{function-definition}
| { menu-definition }
| { screen-definition }
| { logictable-definition }
| { statemachine-definition }
g-data-definition:
type-specifier init-dec-list ";"
function-definition:
func-dec
func-block
menu-definition:
menu-dec
menu-block
screen-definition:
screen-dec

Copyright BMW AG. Ersteller Softing GmbH

Seite 65

INPA
Benutzerdokumentation

V 2.5

screen-block
logictable-definition:
logictable-dec
logictable-block
statemachine-definition:
statemachine-dec
statemachine-block
type-specifier:
"byte"
| "int"
| "long"
| "real"
| "bool"
| "string"
object_type_specifier:
"MENU"
| "SCREEN"
| "STATEMACHINE"
| "STATE"
param-dir-specifier:
"in"
| "out"
| "inout"
| "returns"
| "structure"
func-dec:
identifier "(" [func-param-list] ")"
func-param-list:
func-param-equal-type { "," func-param-equal-type }
func-param-equal-type:
param-dir-specifier ":" type-specifier identifier
| param-dir-specifier ":" object_type-specifier identifier
func-block:
"{"
{ l-data-definition}
{ statement }
"}"
l-data-definition:
type-specifier init-dec-list ";"
menu-dec:
"MENU" identifier "(" ")"

Copyright BMW AG. Ersteller Softing GmbH

Seite 66

INPA
Benutzerdokumentation

V 2.5

menu-block:
"{"
{ l-data-definition }
"INIT" "{" {statement} "}"
{ menu-item-block }
"}"
menu-item-block:
"ITEM" "(" decimal-constant "," string-constant ")" "{" {statement} "}"
screen-dec:
"SCREEN" identifier "(" ")"
screen-block:
"{"
{ l-data-definition }
{ statement }
{ screen-line-block }
"}"
screen-line-block:
"LINE" "(" string-constant , string-constant ")"
"{" {statement}
[ control-line-block ]
"}"
control-line-block:
"CONTROL" "{" {statement} "}"
logictable-dec:
"LOGTABLE" identifier "(" logictable-out-par-list "," logictable-in-par-list ")"
logictable-out-par-list:
"out" ":" "bool" identifier { " " identifier }
logictable-in-par-list:
"in" ":" "bool" identifier { " " identifier }
logictable-block:
"{"
{ logictable-line }
[ logictable-other ]
"}"
logictable-line:
binary_constant ":" binary_mask ";"
logictable-other:
binary_constant ":" "OTHER" ";"
statemachine-dec:
"STATEMACHINE" identifier "(" ")"

Copyright BMW AG. Ersteller Softing GmbH

Seite 67

INPA
Benutzerdokumentation

V 2.5

statemachine-block:
"{"
{ l-data-definition }
"INIT" "{"
{ statement } "}"
{ statemachine-state-block }
"}"
statemachine-state-block:
identifier "{" {statement} "}"
initializer:
binary
init_dec_list:
init_dec_list_line { "," init_dec_list_line }
init-dec-list_line:
identifier
| identifier "=" initializer
statement:
binary ";"
| assignment ";"
| func_call ";"
| ";"
| if-construct
| while-construct
func_call:
identifier "(" [argument_list] ")"
assignment:
identifier "=" binary

Copyright BMW AG. Ersteller Softing GmbH

Seite 68

INPA
Benutzerdokumentation

V 2.5

binary:
identifier
| constant
| "(" binary ")"
| "!" binary
| "-" binary
| binary "+" binary
| binary "-" binary
| binary "*" binary
| binary "/" binary
| binary ">" binary
| binary "<" binary
| binary ">=" binary
| binary "<=" binary
| binary "==" binary
| binary "!=" binary
| binary "||" binary
| binary "&&" binary
| binary "^^" binary
| binary "|" binary
| binary "&" binary
| binary "^" binary
argument-list:
binary { "," binary }
statement_statements:
statement
| "{" { statement } "}"
while-construct:
"while" "(" binary ")" statement_statements
if-construct:
"if" "(" binary ")" statement_statements [ "else" statement_statements ]
constant:
int-constant
| real-constant
| bool-constant
| string-constant
int-constant:
decimal-constant
| hexadecimal-constant
real-constant:
( (decimal-constant [ "." decimal-constant] ) | ( "." decimal-constant) )

[exponent-constant]

exponent-constant:
("e" | "E") ["+" | "-"] decimal-constant
bool-constant:

Copyright BMW AG. Ersteller Softing GmbH

Seite 69

INPA
Benutzerdokumentation

V 2.5

"FALSE"
| "TRUE"
string-constant:
""" {char-lit} """
decimal-constant:
decimal-digit { decimal digit}
binary_prefix:
"0y"
| "0Y"
binary_constant:
binary_prefix binary

_digit { binary_digit }

binary_mask:
binary_prefix binary_mask_digit { binary_mask_digit }
binary_mask_digit:
binary_digit
| "x"
| "X"
binary-digit:
"0"
| "1"
decimal-digit:
"0"
| "1"
...
| "9"
hexadecimal_prefix:
"0x"
| "0X"
hexadecimal-constant:
hexadecimal_prefix hexadecimal-digit { hexadecimal digit}
hexadecimal-digit:
"0"
| "1"
...
| "9"
| "a"
...
| "f"
| "A"
...
| "F"

Copyright BMW AG. Ersteller Softing GmbH

Seite 70

INPA
Benutzerdokumentation

V 2.5

char-lit:
printing-char
| "\b"
| "\n"
| "\r"
| "\t"
| "\f"
| "\\"
| "\""
| "\'
"
identifier:
(letter | underscore) { letter | decimal-digit | underscore }
letter:

upper-case | lower-case

upper-case:
"A"
| "B"
...
| "Z"
lower-case:
"a"
| "b"
...
| "z"
underscore:
"_"
printing-char:
""
| "!"
...
| "~"

(ASCII-CharSet)

comment:
"/*" { printing-char } "*/"
| "//" { printing-char } "\n"

Copyright BMW AG. Ersteller Softing GmbH

Seite 71

INPA
Benutzerdokumentation

V 2.5

8 Anhang B Beispiel fr eine Prfablaufbeschreibung


// *****************************************************
// *** Includes
// *****************************************************
#include "inpa.h"
// *****************************************************
// *** Globals
// *****************************************************
string t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t98,t99;
real real0,real1,real2,real3,real4,real5,real6,real7,real8,real9,real10;
bool bool0,bool1,bool2,bool3,bool4,bool5,bool6,bool7,bool8,bool9;
bool bool10,bool11,bool12,bool13,bool14,bool15,bool16,bool17,bool18,bool19;
bool bool20,bool21,bool22,bool23,bool24,bool25,bool26,bool27,bool28,bool29;
bool bool30,bool31,bool32,bool33,bool34,bool35,bool36,bool37,bool38,bool39;
// *****************************************************
// *** Nacharbeits - Beschreibungsdatei fuer SPM - redesign
// *****************************************************
// *** Grundebene
// *****************************************************
SCREEN s_main ()
{
userboxclose(0);
text( 1, 0, "Identifikationsdaten Spiegelmemory redesign ");
text( 3, 0, "");
INPAapiJob("sm_rd","IDENT","","");
INPAapiCheckJobStatus("OKAY");
LINE ( "BMW_Teilenummer", "")
{
text( 0, 1, "BMW-Teilenummer: ");
INPAapiResultText(t0,"ID_BMW_NR",1,"");
textout( t0, 0, 35);
text( 2, 0, "");
}
LINE ( "Datum_KW", "")
{
text( 0, 1, "Herstelldatum Woche: ");
INPAapiResultText(t1,"ID_DATUM_KW",1,"");
textout( t1, 0, 35);
text( 2, 0, "");
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 72

INPA
Benutzerdokumentation

V 2.5

LINE ( "Datum_JAHR", "")


{
text( 0, 1, "Herstelldatum Jahr: ");
INPAapiResultText(t3,"ID_DATUM_JAHR",1,"");
textout( t3, 0, 35);
text( 2, 0, "");
}

MENU m_main ()
{
INIT {
INPAapiInit();
setmenutitle( " Grundmenue");
}
ITEM( 1 , "Info") {
infobox("Information","Nacharbeitsprogramm f r SPM redesign, Version 1.1. Bei R ckfragen bitte
melden bei Teepe, TP-420, Tel. FIZ-45572");
}
ITEM( 2 , "Ident") {
setscreen( s_ident ,TRUE);
setmenu( m_ident );
}
ITEM( 4 , "Fehler") {
setscreen( s_fehler ,TRUE);
setmenu( m_fehler );
}
ITEM( 5 , "Status") {
setscreen( s_status ,TRUE);
setmenu( m_status );
}
ITEM( 10 , "Ende") {
INPAapiJob("sm_rd","diagnose_ende","","");
INPAapiCheckJobStatus("OKAY");
exit();
}
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 73

INPA
Benutzerdokumentation

V 2.5

// *****************************************************
// *** IDENT - Steuergeraeteidentifikation
// *****************************************************
SCREEN s_ident ()
{
text( 1, 0, "Identifikation");
text( 3, 0, "");
INPAapiJob("sm_rd","ident","","");
INPAapiCheckJobStatus("OKAY");
LINE ( "BMW_Teilenummer", "")
{
text( 0, 1, "BMW-Teilenummer: ");
INPAapiResultText(t0,"ID_BMW_NR",1,"");
textout( t0, 0, 35);
text( 1, 0, "");
}
LINE ( "BMW_Hardwarenummer", "")
{
text( 0, 1, "BMW-Hardwarenummer: ");
INPAapiResultText(t8,"ID_HW_NR",1,"");
textout( t8, 0, 35);
text( 1, 0, "");
}
LINE ( "Softwarenummer", "")
{
text( 0, 1, "Softwarenummer: ");
INPAapiResultText(t1,"ID_SW_NR",1,"");
textout( t1, 0, 35);
text( 1, 0,"");
}
LINE ( "Lieferant", "")
{
text( 0, 1, "Lieferanten-Nummer: ");
INPAapiResultText(t2,"ID_LIEF_NR",1,"");
textout( t2, 0, 35);
text( 1, 0,"" );
}
LINE ( "Codier_Index", "")
{
text( 0, 1, "Codier-Index: ");
INPAapiResultText(t3,"ID_COD_INDEX",1,"");
textout( t3, 0, 35);
text( 1, 0,"");
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 74

INPA
Benutzerdokumentation

V 2.5

LINE ( "Diagnose_Index", "")


{
text( 0, 1, "Diagnose-Index: ");
INPAapiResultText(t4,"ID_DIAG_INDEX",1,"");
textout( t4, 0, 35);
text( 1, 0, "");
}
LINE ( "Bus_Index", "")
{
text( 0, 1, "Bus-Index: ");
INPAapiResultText(t5,"ID_BUS_INDEX",1,"");
textout( t5, 0, 35);
text( 1, 0, "");
}
LINE ( "Datum_KW", "")
{
text( 0, 1, "Herstelldatum Woche: ");
INPAapiResultText(t6,"ID_DATUM_KW",1,"");
textout( t6, 0, 35);
text( 1, 0, "");
}

LINE ( "Datum_JAHR", "")


{
text( 0, 1, "Herstelldatum Jahr: ");
INPAapiResultText(t7,"ID_DATUM_JAHR",1,"");
textout( t7, 0, 35);
}

MENU m_ident ()
{
INIT {
setmenutitle( " /Ident");
}
ITEM( 10 , "Zur ck") {
setscreen( s_main ,TRUE);
setmenu( m_main );
}
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 75

INPA
Benutzerdokumentation

// *****************************************************
// *** Fehlerspeicher lesen
// *****************************************************
MENU m_fehler ()
{
INIT {
userboxopen(0,10,20,6,50,"Fehlerspeicher Lesen", "Der Fehlerspeicher wird gelesen !
bitte warten");
INPAapiFsLesen("sm_rd","na_fs.tmp");
userboxclose(0);
viewopen("na_fs.tmp","Fehlerspeicher Lesen");
setmenutitle( " /Fehler/Fehlerspeicher lesen");
}
ITEM( 10 , "Zur ck") {
viewclose();
setscreen( s_fehler ,TRUE);
setmenu( m_fehler );
}
}

V 2.5

...

SCREEN s_fehler ()
{
LINE ( "", "")
{
}
}
// *****************************************************
// *** Status lesen
// *****************************************************
SCREEN s_status ()
{
LINE ( "Textmeldung", "")
{
text( 5, 10, "Anzeige der gewhlten Stati");
text( 8, 10, "Taste <F4>: Analoge Stati (Potentiometerwerte)");
}
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 76

INPA
Benutzerdokumentation

V 2.5

MENU m_status ()
{
INIT {
setmenutitle( " /Status");
}
ITEM( 4 , "Analog") {
setscreen( s_status_analog ,TRUE);
setmenu( m_status_analog );
}
ITEM( 10 , "Zur ck") {
blankscreen();
setscreen( s_main ,TRUE);
setmenu( m_main );
}
}
// **************************************
// analoge Stati
// **************************************
SCREEN s_status_analog ()
{
INPAapiInit();
text( 1, 0, "Analog-Status auslesen");
text( 2, 0, "Ausgabe der Potentiometer-Spannungen");
INPAapiJob("sm_rd","status_analog_lesen","","");
INPAapiCheckJobStatus("OKAY");
LINE ( "Kopfstuetze", "")
{
text( 0, 1, "Kopfstuetze [Volt]: ");
INPAapiResultAnalog(real0,"STAT_KOPFSTUETZE_WERT",1);
analogout( real0, 1, 30, 0.0,5.0,0.0,5.0, "");
}
LINE ( "Sitzhoehe", "")
{
text( 0, 1, "Sitzhoehe [Volt]: ");
INPAapiResultAnalog(real1,"STAT_SITZHOEHE_WERT",1);
analogout( real1, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Lehne", "")
{
text( 0, 1, "Lehne [Volt]: ");
INPAapiResultAnalog(real2,"STAT_LEHNE_WERT",1);
analogout( real2, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 77

INPA
Benutzerdokumentation

V 2.5

LINE ( "Oberschenkelauflage", "")


{
text( 0, 1, "Oberschenkelauflage [Volt]: ");
INPAapiResultAnalog(real3,"STAT_OBERSCHENKEL_WERT",1);
analogout( real3, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Sitzneigung", "")
{
text( 0, 1, "Sitzneigung [Volt]: ");
INPAapiResultAnalog(real4,"STAT_SITZNEIGUNG_WERT",1);
analogout( real4, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Sitzschlitten", "")
{
text( 0, 1, "Sitzschlitten [Volt]: ");
INPAapiResultAnalog(real5,"STAT_SITZSCHLITTEN_WERT",1);
analogout( real5, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Beifahrerspiegel_horizontal", "")
{
text( 0, 1, "Beifahrerspiegel horizontal [Volt]: ");
INPAapiResultAnalog(real6,"STAT_BF_SPIEGEL_HOR_WERT",1);
analogout( real6, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Beifahrerspiegel_vertikal", "")
{
text( 0, 1, "Beifahrerspiegel vertikal [Volt]: ");
INPAapiResultAnalog(real7,"STAT_BF_SPIEGEL_VER_WERT",1);
analogout( real7, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Fahrerspiegel_horizontal", "")
{
text( 0, 1, "Fahrerspiegel horizontal [Volt]: ");
INPAapiResultAnalog(real8,"STAT_F_SPIEGEL_HOR_WERT",1);
analogout( real8, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}
LINE ( "Fahrerspiegel_vertikal", "")
{
text( 0, 1, "Fahrerspiegel vertikal [Volt]: ");
INPAapiResultAnalog(real9,"STAT_F_SPIEGEL_VER_WERT",1);
analogout( real9, 1, 30, 0.0, 5.0, 0.0, 5.0, "");
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 78

INPA
Benutzerdokumentation

V 2.5

LINE ( "Batteriespannung", "")


{
text( 0, 1, "Batteriespannung [Volt]: ");
INPAapiResultAnalog(real10,"STAT_U_BATT_WERT",1);
analogout( real10, 1, 30, 10.0 ,18.0,11.0,14.5, "");
}

MENU m_status_analog ()
{
INIT {
setmenutitle( " /Status/Analog");
}
ITEM( 2 , "Start") {
start();
}
ITEM( 3 , "Stop") {
stop();
}
ITEM( 4 , "Auswahl") {
select(TRUE);
}
ITEM( 5 , "Gesamt") {
deselect();
}
ITEM( 10 , "Zur ck") {
blankscreen();
setscreen( s_status ,TRUE);
setmenu( m_status );
}
}
inpainit()
{
INPAapiInit();
settitle( " SPM - redesign ");
setmenu(m_main);
setscreen(s_main,TRUE);
}
inpaexit()
{
INPAapiEnd();
}

Copyright BMW AG. Ersteller Softing GmbH

Seite 79