Serielle Schnittstellen

Startseite
Technik
Quellcode

 

Quellcode in Pascal für DOS, Windows und MacintoshFree Stuff: Programme für serielle Schnittstellen entwickeln

Hier finden Sie PASCAL Quellcode für die Verwendung der seriellen Schnittstelle.

Die Unit "SerCom" existiert in der Version 1.2 (22.11.2000) in 3 Variationen für folgende Plattformen:

  1. MS-DOS (Turbo Pascal)
  2. Macintosh (CodeWarrior)
  3. Windows (Delphi)

Dieser Quellcode ist Freeware und darf NICHT verkauft werden.

Viel Spaß am Gerät!
Jens-Erich Lange

 

 

Initialisierung / Deinitialisierung

 

function SerialInit(PortNr, InBuffer, OutBuffer: integer): SerialPtr;

Die Funktion SerialInit initialisiert die Verwendung der seriellen Schnittstelle. Diese Funktion wird üblicherweise einmal zu Beginn des Programms aufgerufen.

Der Parameter PortNr bezeichnet die zu verwendende Schnittstelle. Beim Macintosh bedeutet 1=Modemport (A) und 2=Printerport (B).

Die Parameter InBuffer und OutBuffer geben die Größe der Zwischenpuffer für das asynchrone Senden und Empfangen an. Eine typische Größe für diese Puffer ist 1024.

Das Ergebnis der Funktion ist ein Handle für die zu verwendende Schnittstelle. In allen weiteren Routinen muß dieses Handle angegeben werden. Durch die Identifizierung über ein Handle ist es möglich mehrere Schnittstellen gleichzeitig zu öffnen. Das Gegenstück zu SerialInit ist die Funktion SerialExit.

 

function SerialCode(SP: SerialPtr): SerialErr;

Die Funktion SerialCode gibt eine erweiterte Fehlermeldung zurück wenn eine andere Routine zuvor das Ergebnis "SER_SYS" (-3) geliefert hat. Die Fehlernummer ist die Io-Meldung des Betriebsystems.

 

function SerialExit(SP: SerialPtr): SerialErr;

SerialExit ist das Gegenstück zu SerialInit. Diese Funktion gibt den belegten Speicher für das Handle zu einer Schnittstelle wieder frei. Ist die Schnittstelle zum Zeitpunkt des Aufrufes noch geöffnet, so wird sie zunächst geschlossen.

 

 

Öffnen / Schließen / Parametrieren

 

function SerialPara(SP: SerialPtr; Baud: longint; Data,
                    Stop: integer; Parity: char): SerialErr;

Die Funktion SerialPara parametriert die serielle Schnittstelle. Es ist dabei unerheblich, ob die Schnittstelle bereits geöffnet ist oder nicht.

Für eine ordentliche Kommunikation ist es erforderlich, daß alle Parameter mit denen der Gegenstelle übereinstimmen. Viele Modems können die verwendeten Parameter selbständig erkennen und können daher mit verschiedenen Parametern angesprochen werden.

Die Standardeinstellung für Daten- und Stopbits sowie Parität sind 8 - 1 - Keine (None).

 

function SerialOpen(SP: SerialPtr): SerialErr;

Die Funktion SerialOpen öffnet die serielle Schnittstelle und ermöglicht somit den Datenverkehr. Nachdem die Schnittstelle geöffnet ist, werden alle eingehenden Zeichen im Zwischenpuffer gespeichert bis diese mit Funktion SerialRecv aus dem Puffer entnommen werden.

Das Gegenstück zu SerialOpen ist die Funktion SerialStop. Die Zwischenpuffer werden beim öffnen und schließen einer Schnittstelle gelöscht.

 

function SerialStop(SP: SerialPtr): SerialErr;

SerialStop schließt die serielle Schnittstelle. Die Datenkommunikation wird unterbunden und der Gegenstelle wird auf den Handshakeleitungen signalisiert, daß die Schnittstelle geschlossen ist. Ein ordentlich konfiguriertes Modem sollte dadurch eine bestehende Telefonverbindung trennen.

 

 

Senden / Empfangen

 

function SerialXmit(SP: SerialPtr; data: char): SerialErr;

Die Funktion SerialXmit übergibt ein Zeichen an den Sendepuffer. Falls die Schnittstelle zu diesem Zeitpunkt geöffnet ist, werden die Zeichen im Hintergrund asynchron übertragen. Die Funktion kehrt nach ihrem Aufruf schnell zurück und wartet nicht auf das Ende der Übertragung.

Zeichenketten und binäre Arrays werden vom Aufrufer in einer Schleife an diese Funktion übergeben. Mit der Funktion SerialDone kann geprüft werden, ob schon alle Zeichen übertragen wurden.

 

function SerialRecv(SP: SerialPtr; var data: char): SerialErr;

Die Funktion SerialRecv holt das nächste Zeichen aus dem Empfangspuffer. Voraussetzung ist eine geöffnete Schnittstelle.

Ist das Ergebnis dieser Funktion "1" so wurde die Funktion erfolgreich ausgeführt. Alle anderen Werte bedeuten, daß kein Zeichen empfangen wurde.

 

function SerialDone(SP: SerialPtr): SerialErr;

Die Funktion SerialDone ermittelt wieviele Zeichen sich momentan im Sendepuffer befinden.

Ist das Ergebnis "0", sind keine Zeichen mehr im Sendepuffer.

 

Download

 

Folgende Dateien stehen zum Download bereit:

DOS (Turbo Pascal) Quellcode für DOS (Turbo Pascal)

SERCOM.PAS

(20 kB)

Macintosh (Code Warrior) Quellcode für Macintosh (Code Warrior)

SerCom.p

(16 kB)

Windows (Delphi) Quellcode für Windows (Delphi)

SerCom.pas

(16 kB)