Funktionen:
init()
setspeed()
setbuf()
flush()
rxd()
inbuffercount()
get()
receive()
input()
inputstr()
ready()
outbuffercount()
put()
putint()
putlong()
send()
print2()
print()
num()
ret()
tab()
clr()
esc()
Systemfunktionen:
_receive()
_receivea()
Beschreibung Nach oben
Das Modul swcom.c2 erlaubt den einfachen Zugriff auf die Hardware
RS232
C-Control II Unit.
Ab V1.4 benötigt swcom.c2 für die receive-Funktion den ASM-Treiber
sys0002.hex,
welcher mit einem Download-Tool in Segment3 geladen werden.
sys0002.hex wird außerdem von den aktuellen Versionen von hwcom.c2, mem.c2
und strx.c2 benötigt.
Einfügen als System-Modul Nach oben
Die Datei swcom.c2 in das Verzeichnis .\CControl2\Lib kopieren.
Funktionen:
Schnittstelle initialisieren Nach oben
inline function init() returns int
Die Funktion init initialisiert die serielle Schnittstelle.
Übertragunsrate festlegen Nach oben
inline function setspeed(int speed)
Mit dieser Funktionen wird die Übertragungsrate von swcom festgelegt.
Werte für Baudraten:
Wert | Baudrate | Wert | Baudrate | |
0 | 300 | 5 | 9600 | |
1 | 600 | |||
2 | 1200 | |||
3 | 2400 | |||
4 | 4800 |
speed | Wert für Baudrate |
inline function setbuf(byte buf, int len)
Das Betriebssystem implementiert für beide seriellen Schnittstellen standardmäßig je einen
Empfangspuffer von 32 Byte.
Achtung! Im Handbuch steht, es wären 64 Byte !!
In Applikationen,in denen größere Datenblöcke zu
empfangen sind,sollte ein erweiterter Empfangspfuffer reserviert werden.Anderenfalls
kann es zum Verlust empfangener Daten führen,die vom Programm nicht schnell genug
aus dem Puffer gelesen werden.
buf[] | globales Bytearray für den Empfangspuffer |
len | größe des Puffers in Byte |
Empfangspuffer löschen
Nach oben
inline function flush()
Mit flush() werden alle sich im Empfangspuffer befindenden Daten
gelöscht.
Auf Empfang prüfen Nach oben
inline function rxd() returns int
Mit rxd() wird geprüft, ob sich Daten im Empfangs-FIFO befinden.
Es wird True(-1) zurückgegeben, wenn sich Daten im FIFO befinden,
andernfalls False(0).
Anzahl der Bytes im Empfangspuffer abfragen Nach oben
inline function inbuffercount() returns int
Mit inbuffercount() wird abgefragt, wieviele Bytes sich noch im Empfangs-FIFO befinden.
Es wird die Anzahl der bereitstehenden Bytes im Empfangspuffer zurückgegeben.
Einzenes Byte empfangen Nach oben
inline function get() returns int
Mit get() wird ein einzelnes Byte aus dem Empfangspuffer gelesen
und zurückgegeben.
Empfang von Datenrahmen Nach oben
function receive(byte buf[], int len, long timeout) returns int
Die Funktion receive() empfängt eine angebebene Anzahl an Datenbytes
und
speichert diese in den angegebenen Byte-Puffer.
Werden für länger als das angegebene Timeout keine weiteren Daten
empfangen, so bricht die Funktion vorzeitig ab und gibt die Anzahl
der tatsächlich empfangenen Bytes zurück.
buf[] | Byte-Puffer für die zu empfangenen Daten |
len | Anzahl der zu empfangenen Bytes |
timeout | Zeit in ms, die auf Daten gewartet werden
soll, bis abgeprochen wird. |
Input - Eingabe von Zahlenwerten Nach oben
function input(byte echo) returns int
Mit dieser Funktion können z.B. uber ein Terminal-Programm Zahleneingaben
als ASCII-Zeichenfolge gemacht werden. Die eingebene Zahl muß mit CR+LF (ASCII
13+10)
abgeschlossen werden.
Die Zahl wird anschließend als Integer-Zahl zurückgegeben.
Mit dem Parameter echo kann bestimmt werden, ob während der Eingabe
ein Echo zurückgegeben werden soll.
echo | Echo zurückgeben |
Inputstr - Eingabe von Zeichenketten Nach oben
function inputstr(byte s[], byte echo) returns int
Mit dieser Funktion können z.B. uber ein Terminal-Programm Zeichenketten
eingeben werden. Die eingebene Zeichenkette muß mit CR+LF (ASCII 13+10)
abgeschlossen werden.
Die Zeichenkette wird in der agegebenen Stringvariable gespeichert.
Mit dem Parameter echo kann bestimmt werden, ob während der Eingabe
ein Echo zurückgegeben werden soll.
s[] | String-Variable |
echo | Echo zurückgeben |
Sendebereitschaft prüfen Nach oben
inline function ready() returns int
Mit ready() wird auf Sendebereitschaft geprüft.
Es wird True(-1) zurückgegeben, wenn der Sende-FIFO leer ist,
andernfalls False(0).
Alle Funktionen, die Daten senden, prüfen selbständig auf Sendebereitschaft
und warten ggf. solange bis gesendet werden kann.
Anzahl der Bytes im Sendepuffer abfragen Nach oben
inline function outbuffercount() returns int
Mit outbuffercount() wird abgefragt, wieviele Bytes sich noch im Sende-FIFO befinden.
Es wird die Anzahl der noch nicht gesendeten Bytes im Sendepuffer zurückgegeben.
Einzelnes Datenbyte senden Nach oben
function put(byte c)
Mit put() wird ein einzelnes Datenbyte/Zeichen gesendet.
Die Funktion wartet ggf. auf Sendebereitschaft.
c | Datenbyte (0-255) |
Integerwert senden Nach oben
function putint(int num)
Mit putint() wird ein Integer-Wert in zwei Bytes aufgeteilt und als MSB-first gesendet.
num | Integerwert (0x0000 bis 0xFFFF) |
Long-wert senden Nach oben
function putlong(int num)
Mit putlong() wird ein Long-Wert in vier Bytes aufgeteilt und als MSB-first gesendet.
num | Longwert (0x00000000 bis 0xFFFFFFFF) |
Byte-Puffer senden
Nach oben
function send(byte buf[], int len)
Mit send() wird die angegebene Anzahl an Bytes einer
Bytepuffervariable gesendet.
Die Funktion wartet ggf. auf Sendebereitschaft.
buf[] | Byte-Puffer |
len | Anzahl der zu sendenden Bytes |
Zeichenkette senden Nach oben
function print2(string s)
function print(string s)
Mit print() und print2() wird der Inhalt eines Strings gesendet.(Max. 30
Zeichen)
Bei print() können direkt Zeichenketten übergeben werden.
Für String-Variablen sollte vorzugsweise print2() benutzt werden.
Die Funktion wartet ggf. auf Sendebereitschaft.
s | Zeichenkette |
Zahlen als Zeichenfolge senden Nach oben
function num(int num)
Mit num() wird sie übergenene Zahl als Zeichenfolge gesendet.
num | Zahl (Byte, Integer und Long) |
Steuerzeichen
Nach oben
function
ret() |
// CR+LF senden (Enter/Return) // Tab senden // Clear Screen senden // ESC(ASCII 27) senden |
Mit diesen Funktionen können die Steuerzeichen CR+LF für einen
Zeilenvorschub(ASCII 13+10),
Tabulator (ASCII 9) und Clear Screen (ASCII 12) für Terminalprogramme gesendet
werden.
Diese Funktion warten ggf. auf Sendebereitschaft.
inline function _receive(byte data[],int len) returns int
inline function _receivea(byte pos, byte data[],int len) returns int
Diese Funktionen werden zum Aufruf des Systemtreibers sys0002.hex benutzt.
Sie sollten ohne genauere Kenntnisse über die Funktion des Systemtreibers
nicht direkt genutzt werden !!
Autor: André Helbig Mail: andre.h@cc2net.de
Erstellt: 04.06.2004