Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DidacticNetwork
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
letsgoING
Libraries
DidacticNetwork
Commits
e53f00ec
Commit
e53f00ec
authored
3 years ago
by
Anian Bühler
Browse files
Options
Downloads
Patches
Plain Diff
Readme updated
parent
8d1214f3
No related branches found
Branches containing commit
No related tags found
2 merge requests
!3
Dev to master
,
!2
Dev to Master
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+121
-13
121 additions, 13 deletions
README.md
with
121 additions
and
13 deletions
README.md
+
121
−
13
View file @
e53f00ec
# didacticNetwork
# didacticNetwork
L
ib
rary fo
r
i
mplementi
ng networks on
Arduino
b
oards.
B
ib
liothek zu
r
I
mplementi
erung von vereinfachten Netzwerken auf
Arduino
-B
oards.
Th
e
f
un
c
tionalit
ies correspond to state of the art technologies, which are
dida
c
ti
cally reduced
.
Di
e
F
un
k
tionalit
aeten entsprechen dem Stand der Technik, die Umsetzung ist
dida
k
ti
sch reduziert
.
##
Supported so far
:
##
Bisher unterstuetzt
:
publish/subscribe network
publish/subscribe network
###
usag
e
###
Beispiel
e
```
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
'*'
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment