Skip to content
Snippets Groups Projects
Commit e53f00ec authored by Anian Bühler's avatar Anian Bühler
Browse files

Readme updated

parent 8d1214f3
No related branches found
No related tags found
2 merge requests!3Dev to master,!2Dev to Master
# didacticNetwork # didacticNetwork
Library for implementing networks on Arduino boards. Bibliothek zur Implementierung von vereinfachten Netzwerken auf Arduino-Boards.
The functionalities correspond to state of the art technologies, which are didactically reduced. Die Funktionalitaeten entsprechen dem Stand der Technik, die Umsetzung ist didaktisch reduziert.
## Supported so far: ## Bisher unterstuetzt:
publish/subscribe network publish/subscribe network
### usage ### Beispiele
```Arduino **Broker:**
- sPSN_Broker.ino **->** Broker Applikation (muss nicht angepasst werden)
**Clients:**
- sPSN_Client1(2).ino **->** Client Applikationen die sich gegenseitig einen analogen bzw. digtalen Wert senden
- sPSN-ClientMinimal.ino **->** Minimal-Code für den einfachen Einstieg
- sPSN-Chat.ino **->** Chat-Applikation die Nachrichten unter eigenem Namen austauschen lässt
## Funktionen und Parameter
### Client
```cpp
#Anlegen der Client-Instanz
didacticPSNetClient psnClient; didacticPSNetClient psnClient;
psnClient.begin(stream, callback); #Starten der Client-Instanz
psnClient.handleNetwork(); void psnClient.begin(Stream& sSerial, fcn callback);
psnClient.subscribe(topic); //Param1: Schnittstelle (Serial | SoftSerial); param2: Callback-Funktion
psnClient.unsubscribe(topic);
psnClient.publish(topic); #Netzwerkverwaltung Client (Daten senden und Empfangen, Zugriffsregelung)
bool psnClient.handleNetwork();
// return: true wenn Daten versendet / false wenn nicht
#Topic eines anderen Clients abbonieren
int psnClient.subscribe(char* topic);
// param: Topic String/char-Array ("example" / char topic[n])
int psnClient.subscribe(char* topic, int length);
// param1: Topic String/char-Array; param2: Anzahl Zeichen des Topics
// return ERROR-Wert: DN_ERROR_NOERROR, DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten)
#Topic eines anderen Clients entfernen
bool psnClient.unsubscribe(char* topic);
// param: Topic String/char-Array
bool psnClient.unsubscribe(char* topic, int length);
// param1: Topic String/char-Array; Param2: Param2: Anzahl Zeichen des Topics
// return true wenn Daten versendet / false wenn nicht
#Daten unter Topic veroeffentlichen
int psnClient.publish(char* topic,char* payload);
// param1: Topic String/char-Array; param2: payload-char-Array
int psnClient.publish(char* topic, int topicLength,char* payload, int payloadLength);
// param1: Topic String/char-Array; param2: Anzahl Zeichen des Topics, param3: payload-char-Array; param4: Anzahl Zeichen der Payload
// return: ERROR-Wert: DN_ERROR_NOERROR, DN_ERROR_TOPIC_LEN, DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
#Callback-Funktion (wird bei neuen Daten aufgerufen)
void clientCallback(char* topic, int topicLength, char* payload, int payloadLength){...}
//param1: Topic der Nachricht, param2: Lange des Topics; param3: Nutdaten der Nachricht; param4: Laenge der
```
### Broker
```cpp
#Anlegen der Broker-Instanz
didacticPSNetBroker psnBroker;
#Starten der Broker-Instanz
void psnBroker.begin(Stream& sSerial);
// param: Schnittstelle (Serial | SoftwareSerial)
#Netzwerkverwaltung Broker (Daten senden und Empfangen, Zugriffsregelung)
bool psnBroker.handleNetwork();
```
### Hilfreiche Funktionen
Wichtiger Hinweis:
Diese Funktionen koennen derzeit nur einmal pro Programm/Client-Instanz eingesetzt werden.
Werden diese an verschiedenen Stellen mit verschiedenen Werten verwendet, werden Werte u. U. ueberschrieben.
```cpp
#Flankenerkennung z.B. fuer Taster
int psnClient.edgeDetected(bool currentState);
// param: aktueller binärer Zustand
// return: 0 -> keine Flanke, RISING, FALLING
#Auf Wertaenderung groeßer Schwellwert pruefen
bool psnClient.valueChanged(int currentvalue, int threshold);
// param: aktueller Wert; param2: Schwellwert
// return: true -> Aenderung groeßer als Schwellwert; sonst false
#Nicht blockierendes Warten
bool psnClient.timeElapsed(long);
// param: zu wartende Zeit in Millisekunden
// return: true, wenn Zeit Wartezeit abgelaufen; sonst false
#Einlesen von Text ueber Serialle Schnittstelle bis Endezeichen empfangen wird
int psnClient.readSerialData(Stream&, char*, char);
// param1: Schnittstelle (Serial | SoftSerial); param2: Array in das die Zeichen eingelesen werden; param3: Endezeichen (char)
// return: Anzahl der eingelesenen Zeichen (0 wenn noch kein Endezeichen)
```
### Konstanten
Konstanten aus der Library die fuer die Programmierung genutzt werden und teilweise angepasst werden koennen.
```cpp
#ASCII Endezeichen
DN_ASCII_CR -> 'CR' -> (int) 13
DN_ASCII_NL -> 'NL' -> (int) 10
#Laenge Topics und Payload (Client und Broker)
MAX_LEN_TOPICS default: 10
MAX_LEN_PAYLOAD default: 20
#Anzahl Topics
MAX_NR_TOPICS_CLIENT default: 5
MAX_NR_TOPICS_BROKER default: 20
#ERRORs
DN_ERROR_NOERROR 0
DN_ERROR_TOPIC_LEN -1
DN_ERROR_PAYLOAD_LEN -2
#Frame
MSG_PRELIMITER '<'
MSG_DELIMITER '>'
MSG_SEPARATOR '|'
didacticPSNetBroker psnBroker; #Dienste
psnBroker.begin(stream, callback); MSG_PUBLISH '@'
psnBroker.handleNetwork(); MSG_SUBSCRIBE '?'
MSG_UPDATE '#'
MSG_TOPIC_MULTI '*'
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment