Einfügen als Gemeinsames Modul
Funktionen:
init()
Beschreibung Nach oben
Das Modul trx.c2 ist der Treiber für den 433 MHz Transceiver TRX
433 (CONRAD Best.-Nr. 190045), um diesen mit der C-Control II ansteuern zu
können. Unterstützt wird sowohl die C-Control II Unit (auch auf dem
CONRAD-Roboter CCRP5) mit angeschlossenem LC-Display als auch die C-Control II Station.
Einfügen als Gemeinsames Modul Nach oben
Die Datei trx.c2 in das Verzeichnis .\CControl2\UserLib
der IDE
kopieren und in der Datei modules.txt die Zeile trx.c2 am Ende einfügen (falls sie noch nicht
vorhanden ist!).
Ein zusätzliches Ausrufezeichen unmittelbar nach einem Modulnamen in modules.txt
bestimmt, daß das Modul in jedem neuen Projekt von Anfang an aktiviert wird.
Konstanten Nach oben
Die hier angeführten Modus-Konstanten werden für die erweiterten Sende- und
Empfangsfunktionen benötigt. Sie kennzeichnen die jeweiligen Datenrahmen (RF-Frames)
im Datenbyte 0 (DB0), so dass der Inhalt jedes Frames eindeutig
identifizierbar wird:
const MODE_POWERcontrol = 1;
// Kontrolle Sendeleistung
const MODE_CHANNELcontrol = 2;
// Kontrolle Kanal
const MODE_PREAMBLEcontrol = 3;
// Kontrolle Präambel
const MODE_DEVADDRcontrol = 4;
// Kontrolle Geräteadresse
const MODE_FRAMEcontrol = 5; //
Kontrolle Framelänge
const MODE_INFOrequest = 6;
// Informationsanforderung
const MODE_DIRECTcontrol =10; //
Direktkontrolle über CF
const MODE_REPEATcontrol =11; //
Kontrolle Sendewiederholung
const MODE_REQUESTcontrol =12; //
Kontrolle Sendeanforderung
const MODE_CODEcontrol =13;
//
Kontrolle Kontrollcode
const MODE_STATUStrx =20;
// Status Datentransfer
const MODE_BYTEtrx =21;
// Byte Datentransfer
const MODE_INTtrx =22;
// Integer Datentransfer
const MODE_LONGtrx =23;
// Long Datentransfer
const MODE_FLOATtrx =24;
// Float Datentransfer
const MODE_STRINGtrx =25;
// String
Datentransfer
const MODE_DATEtrx =26;
// Datum
Datentransfer
const MODE_TIMEtrx =27;
// Zeit
Datentransfer
Variablen Nach oben
Mit den hier angeführten Variablen werden Grundeinstellungen des TRX 433
gespeichert und Betriebszustände signalisiert:
/******************************************************************/
long LAST_TX_TIME; // Sendezeit des letzten
RF-Frames
long
LAST_RX_TIME; // Empfangszeit des letzten RF-Frames
byte
TX_REQUEST; // Sendeanforderung
[LO/HI]
byte
TX_ERROR; // Sendefehler
[LO/HI]
byte RX_ERROR;
// Empfangsfehler
[LO/HI]
byte CONTROL_CODE; // Kontrollcode
[0..255]
/******************************************************************/
//Grundeinstellungen TRX 433:
byte POWER;
// Sendeleistung
[0..255]
byte CHANNEL; // Kanal (Frequenz)
[0..4]
byte PREAMBLE; // Präambel
[1..255]
byte ADDRESSED_MODE; // Adressierter Modus
[LO/HI]
byte DEVICE_ADDRESS; // Geräteadresse
[0..255]
byte FRAME;
// Datenrahmen
[8]
//Grundeinstellungen Gegenstation (aus-> receiveSTATUS()):
byte POWER_2;
// Sendeleistung Gegenstation [0..255]
byte CHANNEL_2; // Kanal (Frequenz)
Gegenstation [0..4]
byte PREAMBLE_2; // Präambel
Gegenstation [1..255]
byte ADDRESSED_MODE_2; // Adressierter Modus
Gegenstation [LO/HI]
byte DEVICE_ADDRESS_2; // Geräteadresse
Gegenstation [0..255]
byte FRAME_2; // Datenrahmen
Gegenstation [8/(16)]
/******************************************************************/
//RF und CF FRAME-BUFFER:
byte DB0; //
E
byte DB1; //
M
byte DB2; //
A
byte DB3; //
R
byte DB4; //
F
byte DB5; //
-
byte DB6; //
F
byte ADDR; // C R -> ADDRESS
byte CMD; // O
-> COMMAND
byte HBYTE; // M
-> DATA0
byte LBYTE; // M
-> DATA1
Die Variablen LAST_TX_TIME und LAST_RX_TIME enthalten die letzte Sende- bzw. Empfangszeit eines RF-Frames. Diese Systemzeiten werden für zeitgesteuerte Sendeprotokolle im Multi Master Betrieb benötigt, bei dem die Teilnehmer bestimmte "Zeit-Slots" zum Senden oder Empfang zugeteilt bekommen.
TX_REQUEST und TX_ERROR signalisieren beim "Control-TRX" (siehe sendCONTROL() und receiveCONTROL()!), dass eine Sendeanforderung bzw. ein Sendefehler vorliegt. Beim "Control-TRX" kann auch ein CONTROL_CODE (Standard: 0) benutzt werden, um eine Kontrollfunktion auf einige oder eine Gruppe von Empfängern anzuwenden, die dann denselben Kontrollcode wie der Sender haben.
Bei allen erweiterten Empfangsfunktionen signalisiert RX_ERROR, ob ein Datenrahmen korrekt empfangen wurde.
Die Variablen POWER, CHANNEL, PREAMBLE, ADDRESSED_MODE, DEVICE_ADDRESS, FRAME enthalten die Grundeinstellungen des TRX 433. Ihr Inhalt bleibt aktuell, wenn nur die Funktionen dieses Moduls zur Änderung von Einstellungen verwendet werden.
Die Variablen POWER_2, CHANNEL_2, PREAMBLE_2, ADDRESSED_MODE_2, DEVICE_ADDRESS_2, FRAME_2 enthalten die Grundeinstellungen einer Gegenstation, die mit der Funktion receiveSTATUS() empfangen wurden. Die Werte von CHANNEL_2 und FRAME_2 werden in der Regel identisch mit den eigenen Einstellungen sein. Es ist jedoch auch möglich, über den "Status-TRX" z.B. einen Kanalwechsel anzukündigen.
Der "RF FRAME-BUFFER" (Sende-/Empfangs-Datenpuffer) besteht aus den Bytes ADDR, DB0..DB6 (8 Byte), der "CF FRAME-BUFFER" (Befehls-Datenpuffer) aus ADDR, CMD, HBYTE und LBYTE (4 Byte). Über diese Variablen erfolgt die Kommunikation mit dem TRX 433.
Funktionen:
init() Nach oben
function init()
Die Funktion init() initialisiert den TRX 433-Treiber und muss am Anfang des thread main aufgerufen werden.
ready() Nach oben
function ready()
Die Funktion ready() liefert den Wert LO (0), wenn keine Daten empfangen wurden, oder HI (-1), wenn empfangene Daten aus dem RF FRAME-BUFFER gelesen werden können.
flush() Nach oben
function flush()
Die Funktion flush() leert den RF FRAME-BUFFER (Empfangs-Datenpuffer).
wait4ready() Nach oben
function wait4ready(long timeout)
Die Funktion wait4ready() wartet solange, bis empfangene Daten aus dem RF FRAME-BUFFER gelesen werden können (Rückgabewert: HI) oder bis die gewählte Timeout-Dauer überschritten ist (Rückgabewert: LO).
timeout | Timeout [max. 2147483647] (ms) |
TRX_SEND() Nach oben
function TRX_SEND()
Die Funktion TRX_SEND() ist die zentrale Senderoutine. Abhängig vom Wert von ADDR wird entweder ein 4 Byte-CF-Frame (bei ADDR=0), bestehend aus ADDR (= 0), CMD, HBYTE, LBYTE, oder ein 8 Byte-RF-Frame (bei ADDR ungleich 0), bestehend aus ADDR, DB0..DB6, gesendet. CF-Frames dienen zur Kontrolle des eigenen TRX 433, RF-Frames zur Datenübertragung an andere Transceiver. Vor dem Aufruf von TRX_SEND() müssen die Variablen ADDR und DB0..DB6 (RF-Frame) mit dem gewünschten Sendeinhalt gefüllt werden, bei einem CF-Frame die Variablen CMD, HBYTE und LBYTE. Nach dem Senden eines RF-Frames speichert LAST_TX_TIME die Systemzeit, um zeitgesteuerte Sendeprotokolle zu ermöglichen. Ein Empfänger wird diesen mit TRX_SEND() gesendeten RF-Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse (DEVICE_ADDRESS) mit der Empfängeradresse des Frames (aus ADDR) überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
TRX_RECEIVE() Nach oben
function TRX_RECEIVE()
Die Funktion TRX_RECEIVE() ist die zentrale Empfangsroutine für 8 Byte-RF-Frames. Der empfangene RF-Frame steht dann in den Variablen ADDR (Senderadresse = Geräteadresse des Senders), DB0..DB6 (Daten) zur Verfügung. Im adressierten Modus werden nur die RF-Frames an den Computer gemeldet, deren Empfängeradresse mit der eigenen Geräteadresse (DEVICE_ADDRESS) überein stimmt. Nach dem Empfang eines RF-Frames speichert LAST_RX_TIME die Systemzeit, um zeitgesteuerte Sendeprotokolle zu ermöglichen. Vor dem Aufruf von TRX_RECEIVE() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit TRX_RECEIVE() eingelesen werden.
getSTATUS() Nach oben
function getSTATUS()
Die Funktion getSTATUS() liest einen 4 Byte-Status-Frame vom eigenen TRX 433. Dieser enthält in LBYTE die Geräteadresse, die in DEVICE_ADDRESS gespeichert und zusätzlich als Rückgabewert von getSTATUS() ausgegeben wird. Wenn die Geräteadresse 255 ist, arbeitet der Transceiver im nicht-adressierten Modus. Die Variable ADDRESSED_MODE wird dann auf LO gesetzt, sonst auf HI (= adressierter Modus).
CHset() Nach oben
function CHset(byte ch)
Mit CHset() erfolgt die Kanaleinstellung. Es gibt 5 Kanäle (ch -> 0: 433,3 / 1: 433,5 / 2: 433,9 / 3: 434,2 / 4: 434,5 MHz). Die Kanal Nummer wird in CHANNEL gespeichert.
ch | Kanal (Frequenz) [0..4] |
CH0set() Nach oben
function CH0set()
Die Funktion CH0set() stellt den Kanal 0 (433,3 MHz) ein. Die Kanal Nummer wird in CHANNEL gespeichert.
CH1set() Nach oben
function CH1set()
Die Funktion CH1set() stellt den Kanal 1 (433,5 MHz) ein. Die Kanal Nummer wird in CHANNEL gespeichert.
CH2set() Nach oben
function CH2set()
Die Funktion CH2set() stellt den Kanal 2 (433,9 MHz) ein. Die Kanal Nummer wird in CHANNEL gespeichert. Kanal 2 ist der Standard-Kanal nach einem Reset des TRX 433.
CH3set() Nach oben
function CH3set()
Die Funktion CH3set() stellt den Kanal 3 (434,2 MHz) ein. Die Kanal Nummer wird in CHANNEL gespeichert.
CH4set() Nach oben
function CH4set()
Die Funktion CH4set() stellt den Kanal 4 (434,5 MHz) ein. Die Kanal Nummer wird in CHANNEL gespeichert.
PWRset() Nach oben
function PWRset(byte pwr)
Mit PWRset() erfolgt die Einstellung der Sendeleistung. Ein Wert von 15 für pwr entspricht z.B. 0 dBm. Die Sendeleistung wird in POWER gespeichert.
pwr | Sendeleistung (-43..+10 dBm) [0..255] |
PWR0set() Nach oben
function PWR0set()
Die Funktion PWR0set() stellt die minimale Sendeleistung -43 dBm [0] ein. Die Sendeleistung wird in POWER gespeichert.
PWR1set() Nach oben
function PWR1set()
Die Funktion PWR1set() stellt die Sendeleistung -20 dBm [1] ein. Die Sendeleistung wird in POWER gespeichert.
PWR2set() Nach oben
function PWR2set()
Die Funktion PWR2set() stellt die Sendeleistung -15 dBm [2] ein. Die Sendeleistung wird in POWER gespeichert.
PWR3set() Nach oben
function PWR3set()
Die Funktion PWR3set() stellt die Sendeleistung -10 dBm [4] ein. Die Sendeleistung wird in POWER gespeichert.
PWR4set() Nach oben
function PWR4set()
Die Funktion PWR4set() stellt die Sendeleistung -5 dBm [8] ein. Die Sendeleistung wird in POWER gespeichert.
PWR5set() Nach oben
function PWR5set()
Die Funktion PWR5set() stellt die Sendeleistung 0 dBm [15] ein. Die Sendeleistung wird in POWER gespeichert. 0 dBm ist die Standard-Sendeleistung nach einem Reset des TRX 433.
PWR6set() Nach oben
function PWR6set()
Die Funktion PWR6set() stellt die Sendeleistung +5 dBm [111] ein. Die Sendeleistung wird in POWER gespeichert.
PWR7set() Nach oben
function PWR7set()
Die Funktion PWR7set() stellt die maximale Sendeleistung +10 dBm [255] ein. Die Sendeleistung wird in POWER gespeichert.
TRXreset() Nach oben
function TRXreset()
Die Funktion TRXreset() bewirkt ein Reset des TRX 433. Dadurch werden die Standardwerte wieder hergestellt: Sendeleistung 0 dBm (POWER = 15), Präambel 10 (PREAMBLE = 10), Frequenz 433,9 MHz (CHANNEL = 2), Datenrahmen 8 Byte (FRAME = 8), nicht-adressierter Modus (DEVICE_ADDRESS = 255, ADDRESSED_MODE = LO).
FRAME8set() Nach oben
function FRAME8set()
Mit der Funktion FRAME8set() wird ein Datenrahmen von 8 Byte eingestellt. Dies ist gleichzeitig die Standard-Einstellung nach einem Reset des TRX 433. Da mit c2 kein 16 Byte-Datenrahmen möglich ist, wird diese Funktion normalerweise nicht benötigt (d.h. es wird immer ein 8 Byte-Datenrahmen verwendet).
ADDRset() Nach oben
function ADDRset(byte dev_addr)
Mit der Funktion ADDRset() wird der adressierte Modus eingeschaltet (ADDRESSED_MODE = HI) und eine Geräteadresse (DEVICE_ADDRESS) mit dem Parameter dev_addr festgelegt. Beim Senden von RF-Frames wird auch die Geräteadresse übermittelt und empfängerseitig in ADDR (Senderadresse) abgelegt. Beim Empfänger werden im adressierten Modus nur die RF-Frames an den Computer gemeldet, deren Empfängeradresse mit der eigenen Geräteadresse überein stimmt. Sender sollten die Geräteadresse 255 nicht verwenden; Empfänger mit der Geräteadresse 0 melden nie einen Frame an den Computer, da die Empfängeradresse 0 nicht nutzbar ist.
dev_addr | Geräte-Adresse [0..255] |
PREAMBLEset() Nach oben
function PREAMBLEset(byte preamble)
Mit der Funktion PREAMBLEset() wird die Länge der Präambel (siehe Bedienungsanleitung des TRX 433, Seite 16!) bestimmt. Der Standardwert ist 10. Ein höherer Wert verbessert die Datensicherheit, verringert aber die Datenrate. Bei der Verwendung dieser Funktion ist Vorsicht geboten, weil unterschiedliche Präambel-Längen u.U. eine Kommunikation zwischen zwei TRX 433 unmöglich machen!
preamble | Präambel [1..255] |
FSKset() Nach oben
function FSKset(byte state)
Die Funktion FSKset() setzt die FSK-Frequenz auf "Hoch" (state = HI) oder "Niedrig" (state = LO).
state | Status [LO/HI] |
TEST_txon() Nach oben
function TEST_txon()
Die Funktion TEST_txon() schaltet den Sender des TRX 433 zu Testzwecken ein. Diese Funktion wird normalerweise nicht benötigt. Bei der Verwendung von TEST_txon() ist zu beachten, dass der "Duty Cycle" von 10% nicht überschritten wird (d.h. max. 6 Minuten Sendezeit pro Stunde)!
TEST_rxon() Nach oben
function TEST_rxon()
Die Funktion TEST_rxon() schaltet den Empfänger des TRX 433 ein. Diese Funktion wird normalerweise nicht benötigt.
TEST_audio1k() Nach oben
function TEST_audio1k()
Die Funktion TEST_audio1k() sendet eine Dauerfrequenz von 1kHz zu Testzwecken. Bei der Verwendung von TEST_audio1k() ist zu beachten, dass der "Duty Cycle" von 10% nicht überschritten wird (d.h. max. 6 Minuten Sendezeit pro Stunde)!
TEST_audio2k() Nach oben
function TEST_audio2k()
Die Funktion TEST_audio2k() sendet eine Dauerfrequenz von 2kHz zu Testzwecken. Bei der Verwendung von TEST_audio2k() ist zu beachten, dass der "Duty Cycle" von 10% nicht überschritten wird (d.h. max. 6 Minuten Sendezeit pro Stunde)!
TEST_FREQset() Nach oben
function TEST_FREQset(float freq, int deviation)
Die Funktion TEST_FREQset() stellt eine andere als die mit den 5 Kanälen mögliche Sende-/Empfangsfrequenz ein. Diese Funktion wird normalerweise nicht benötigt und entspricht nicht der bestimmungsgemäßen Verwendung des TRX 433!
freq | Frequenz [z.B. 433.95] (MHz) |
deviation | Frequenzhub [z.B. 10] (kHz) |
sendCONTROL() Nach oben
function sendCONTROL(byte mode, byte param, byte rx_addr)
Die Funktion sendCONTROL() sendet einen Control-Frame an einen anderen TRX 433, der hierdurch "ferngesteuert" (kontrolliert) oder zu einem bestimmten Verhalten veranlasst werden soll. Der Parameter mode legt fest, welche Kontroll-Aufgabe (siehe Modus-Konstanten der Form "MODE_XYZcontrol" oder "MODE_XYZrequest" [1..19]!) beabsichtigt ist; param bestimmt, wie die gewählte Kontroll-Aufgabe ausgeführt wird. Beispielsweise besagt die Konstante MODE_POWERcontrol [1], dass die Sendeleistung ferngesteuert werden soll. Der Parameter param enthält dann die gewünschte Sendeleistung [0..255]. Bei der Direktkontrolle (MODE_DIRECTcontrol) wird param nicht benötigt, sondern in DB4..DB6 zusätzlich der CF-Frame (aus CMD, HBYTE, LBYTE) übertragen. Bei allen anderen Kontrollfunktionen sind DB4..DB6 frei und können zur Übermittlung weiterer Kontrollinformationen genutzt werden. Bei der Kontroll-Aufgabe MODE_INFOrequest [6] werden die angeforderten Informationen anschließend mit einer der Funktionen receiveSTATUS(), receiveDATE() bzw. receiveTIME() empfangen. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
mode | Modus (Kontroll-Aufgabe) [1..19] |
param | Parameter [0..255] |
rx_addr | Empfängeradresse [1..255] |
receiveCONTROL() Nach oben
function receiveCONTROL(byte mode, byte tx_addr)
Die Funktion receiveCONTROL() empfängt Control-Frames, die mit sendCONTROL() gesendet wurden. Damit wird der TRX 433 fernsteuerbar bzw. kontrollierbar. Der Parameter mode legt fest, welche Kontroll-Aufgabe erwartet bzw. zugelassen wird. Nur wenn sich Sender und Empfänger einig über die Kontroll-Aufgabe (Rückgabewert) sind, wird diese hier auch ausgeführt. (Ausnahme: Ist mode gleich 255, dann wird jede vom Sender übermittelte Kontroll-Aufgabe zugelassen und ausgeführt.) Setzt der Empfänger mode gleich 0, dann ist die Kontrolle gesperrt, und jeder empfangene Frame wird nach ca. 180 ms zurückgesendet ("Echofunktion"). Der Parameter tx_addr bestimmt, von welcher Senderadresse Control-Frames angenommen werden. Ist tx_addr gleich 255, dann werden Control-Frames von jeder Senderadresse akzeptiert. Sender und Empfänger von Control-Frames müssen auch den selben CONTROL_CODE verwenden (Standard: 0). Durch unterschiedliche Kontrollcodes können von einem Sender mehrere Gruppen von Empfängern auf unterschiedliche Weise ferngesteuert werden. DB4..DB6 enthalten ggf. drei Bytes mit weiteren Kontrollinformationen (Ausnahme: MODE_DIRECTcontrol). Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und der Control-Frame ist evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveCONTROL() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveCONTROL() eingelesen werden.
mode | Modus (Kontroll-Aufgabe) [0, 1..19, 255] |
tx_addr | Senderadresse [0..255] |
Folgende Kontroll-Aufgaben sind zur Zeit implementiert:
MODE_POWERcontrol -> Fernsteuerung der Sendeleistung
MODE_CHANNELcontrol -> Fernsteuerung des Kanals
MODE_PREAMBLEcontrol -> Fernsteuerung der Präambel-Länge
MODE_DEVADDRcontrol -> Fernsteuerung der Geräteadresse
MODE_FRAMEcontrol -> Fernsteuerung der Framelänge (nicht benötigt, da immer 8 Byte!)
MODE_INFOrequest -> Wenn senderseitig param=0 ist, wird ein Status-Frame angefordert. Ist param=1 wird das Datum, mit param=2 die Uhrzeit angefordert. Die Informationen werden daraufhin nach ca. 180 ms mit sendSTATUS(), sendDATE() bzw. sendTIME() an den anfordernden Transceiver übermittelt.
MODE_DIRECTcontrol -> Direktkontrolle über CF-Frame. Mit diesem Modus sind alle Einstellungen des TRX 433 direkt beeinflussbar. Ein Empfänger, der diese Kontrolle zulässt, muss sehr sicher sein, dass er dem Sender vertrauen kann. Dies gilt auch für den Inhalt des CF-Frames, da dieser empfängerseitig nicht geprüft wird!
MODE_REPEATcontrol -> Mit diesem Modus kann ein Datenempfänger signalisieren, ob Daten angekommen sind. Der Datenempfänger sendet dazu einen Control-Frame. Der ehemalige Datensender (hier der Empfänger des Control-Frames) erfährt durch die Variable TX_ERROR, ob seine Daten angekommen sind (LO) oder nicht (HI). Im letzteren Fall muss die Datensendung ggf. wiederholt werden.
MODE_REQUESTcontrol -> Mit diesem Modus kann eine Datensendung angefordert werden. Der Empfänger dieses Control-Frames erfährt durch die Variable TX_REQUEST, ob eine Sendeanforderung anliegt (HI) oder nicht (LO). Mit den Variablen DB4..DB6 könnte mitgeteilt werden, welche Daten angefordert werden. In DB4 könnte dabei z.B. die Art des Datentransfers (Konstanten der Form "MODE_XYZtrx" [20..27]), in DB5 und DB6 ein (je nach Anwendung festzulegender) Schlüssel zum Inhalt des angeforderten Frames enthalten sein.
MODE_CODEcontrol -> Mit diesem Modus kann der CONTROL_CODE geändert werden. Der Sender übermittelt dazu mit sendCONTROL() einen Control-Frame, der als param (in DB1) den neuen Kontrollcode enthält. Der Sender muss diesen Control-Frame noch mit dem alten Kontrollcode versenden! Erst danach muss auch der Sender dann ggf. seinen Kontrollcode ändern.
sendSTATUS() Nach oben
function sendSTATUS(byte rx_addr)
Die Funktion sendSTATUS() sendet einen Status-Frame. Er übermittelt die Inhalte von POWER, CHANNEL, PREAMBLE, FRAME,- also die Grundeinstellungen des TRX 433. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
rx_addr | Empfängeradresse [1..255] |
receiveSTATUS() Nach oben
function receiveSTATUS()
Die Funktion receiveSTATUS() empfängt einen Status-Frame. Die Grundeinstellungen des Senders werden in den Variablen POWER_2, CHANNEL_2, PREAMBLE_2, FRAME_2 abgelegt. Seine Adresse wird in DEVICE_ADDRESS_2 gespeichert und zusätzlich als Rückgabewert von receiveSTATUS() ausgegeben. ADDRESSED_MODE_2 enthält LO, wenn die Adresse des Senders 255 ist, sonst HI. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und der Status-Frame ist evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveSTATUS() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveSTATUS() eingelesen werden.
sendBYTE() Nach oben
function sendBYTE(byte var, byte rx_addr)
Die Funktion sendBYTE() sendet ein Daten-Byte (var). DB4..DB6 sind frei und können zur gleichzeitigen Übermittlung von drei weiteren Bytes verwendet werden. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
var | Byte [0..255] |
rx_addr | Empfängeradresse [1..255] |
receiveBYTE() Nach oben
function receiveBYTE()
Die Funktion receiveBYTE() empfängt ein Daten-Byte (Rückgabewert). DB4..DB6 enthalten ggf. drei weitere Daten-Bytes. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveBYTE() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveBYTE() eingelesen werden.
sendINT() Nach oben
function sendINT(int var, byte rx_addr)
Die Funktion sendINT() sendet Daten im Integer-Format (var). DB5..DB6 sind frei und können zur gleichzeitigen Übermittlung von zwei zusätzlichen Bytes verwendet werden. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
var | Integer [-32768..32767] |
rx_addr | Empfängeradresse [1..255] |
receiveINT() Nach oben
function receiveINT()
Die Funktion receiveINT() empfängt Daten im Integer-Format (Rückgabewert). DB5..DB6 enthalten ggf. zwei zusätzliche Daten-Bytes. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveINT() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveINT() eingelesen werden.
sendLONG() Nach oben
function sendLONG(long var, byte rx_addr)
Die Funktion sendLONG() sendet Daten im Long-Format (var). Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
var | Long [-2147483648..2147483647] |
rx_addr | Empfängeradresse [1..255] |
receiveLONG() Nach oben
function receiveLONG()
Die Funktion receiveLONG() empfängt Daten im Long-Format (Rückgabewert). Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveLONG() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveLONG() eingelesen werden.
sendFLOAT() Nach oben
function sendFLOAT(float var, byte rx_addr)
Die Funktion sendFLOAT() sendet Daten im Float-Format (var) in Form von zwei aufeinanderfolgenden RF-Frames. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
var | Float [+-1.7*10^-308..+-1.7*10^308] |
rx_addr | Empfängeradresse [1..255] |
receiveFLOAT() Nach oben
function receiveFLOAT()
Die Funktion receiveFLOAT() empfängt zwei aufeinanderfolgende RF-Frames, die Daten im Float-Format (Rückgabewert) enthalten. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveFLOAT() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveFLOAT() eingelesen werden.
sendSTRING() Nach oben
function sendSTRING(string s, byte rx_addr)
Die Funktion sendSTRING() sendet einen String (s) mit einer Länge von max. 30 Zeichen in Form von 1 bis 7 aufeinanderfolgenden RF-Frames. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
s | String [0..30 Zeichen] |
rx_addr | Empfängeradresse [1..255] |
receiveSTRING() Nach oben
function receiveSTRING(string s)
Die Funktion receiveSTRING() empfängt 1 bis 7 aufeinanderfolgende RF-Frames, die einen String (s) mit einer Länge von max. 30 Zeichen enthalten. Die Funktion liefert als Rückgabewert die Stringlänge. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveSTRING() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveSTRING() eingelesen werden.
s | String [0..30 Zeichen] |
sendDATE() Nach oben
function sendDATE(byte rx_addr)
Die Funktion sendDATE() sendet einen Frame, der das Datum (Tag, Monat, Jahr) der internen Echtzeituhr übermittelt. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
rx_addr | Empfängeradresse [1..255] |
receiveDATE() Nach oben
function receiveDATE()
Die Funktion receiveDATE() empfängt einen Frame, der das Datum (Tag, Monat, Jahr) enthält und überträgt das Datum in die interne Echtzeituhr. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveDATE() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveDATE() eingelesen werden.
sendTIME() Nach oben
function sendTIME(byte rx_addr)
Die Funktion sendTIME() sendet einen Frame, der die Uhrzeit (Stunde, Minute, Sekunde, Sommerzeitflag) der internen Echtzeituhr übermittelt. Mit der Empfängeradresse (rx_addr) wird festgelegt, für welche(n) Empfänger der Frame bestimmt ist. Ein Empfänger wird diesen Frame nur dann an den Computer melden, wenn seine eigene Geräteadresse mit der Empfängeradresse des Frames überein stimmt oder wenn er im nicht-adressierten Modus arbeitet.
rx_addr | Empfängeradresse [1..255] |
receiveTIME() Nach oben
function receiveTIME()
Die Funktion receiveTIME() empfängt einen Frame, der die Uhrzeit (Stunde, Minute, Sekunde, Sommerzeitflag) enthält und überträgt die Uhrzeit in die interne Echtzeituhr. Die Funktion liefert das Sommerzeitflag (Sommerzeit = HI) als Rückgabewert. Wenn RX_ERROR den Wert HI hat, liegt ein Empfangsfehler vor, und die Daten sind evtl. nicht korrekt übertragen worden. Vor dem Aufruf von receiveTIME() muss mit den Funktionen ready() oder wait4ready() die Datenleitung (DATA) abgefragt werden. Ist der Rückgabewert dieser Funktionen HI, dann können die Daten mit receiveTIME() eingelesen werden.
showFRAME4() Nach oben
function showFRAME4()
Die Funktion showFRAME4() zeigt den 4 Byte-CF-Frame (ADDR, CMD, HBYTE, LBYTE) in Zeile 1 des LC-Displays.
showFRAME8() Nach oben
function showFRAME8()
Die Funktion showFRAME8() zeigt den 8 Byte-RF-Frame (ADDR, DB0..DB6) auf dem LC-Display.
showPOWER() Nach oben
function showPOWER()
Die Funktion showPOWER() zeigt in Form einer Balkenanzeige die lokale Sendeleistung (POWER) in Zeile 1 und die Sendeleistung einer Gegenstation (POWER_2) in Zeile 2 des LC-Displays.
Autor Version 2.20: Dirk Ottensmeyer Mail: dirk.ottensmeyer@owl-online.de
Erstellt: 21.05.2005