diff --git a/examples/sPSN_Chat/sPSN_Chat.ino b/examples/sPSN_Chat/sPSN_Chat.ino index 3c21bd167a730d5ee68ae06c88cbdc02b9d45d10..da9efdffa3f86f58be809f80f66f8a347d443a38 100644 --- a/examples/sPSN_Chat/sPSN_Chat.ino +++ b/examples/sPSN_Chat/sPSN_Chat.ino @@ -36,10 +36,11 @@ char topicSub[MAX_LEN_TOPICS] = {""}; //Array für neues Empfangs-Topi char topicPub[MAX_LEN_TOPICS] = {""}; //Array für eigenes Sende-Topic //Callback-Funktion wird bei neuen Daten automatisch aufgerufen -void newData(char* mTopic, char* mData) { - Serial.print(mTopic); +void newData(char* topic, char* payload) { + //Ausgabe-> "Chatname": "geschriebene Nachricht" + Serial.print(topic); //topic entspricht im Chat dem NAmen des Chatpartners Serial.print(":\t"); - Serial.println(mData); + Serial.println(payload); //payload enthält die geschriebene Nachricht } SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender @@ -58,55 +59,57 @@ void setup() { sReader.begin(Serial); //AUSGABE INFOTEXT - Serial.print("Bitte den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> "); + Serial.print("1. Den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> "); Serial.println("#DeinName"); - Serial.print("Gebe dann die Namen deiner Chatpartner mit einem @ ein. -> "); - Serial.println("@ChatPartner"); - Serial.println("Anschließend kannst du mit ihnen schreiben."); + Serial.print("2. Die Namen deiner Chatpartner*innen mit einem @ eingeben -> "); + Serial.println("@ChatPartner*in \t (mehrfach moeglich)"); + Serial.print("3. Chatten: "); Serial.println("Pro Nachricht duerfen maximal 20 Zeichen eingegeben werden!"); Serial.println(); Serial.println("HINWEIS:"); - Serial.println("Stelle das Zeilenende im SerialMonitor auf \"Zeilenumbruch (CR)\""); + Serial.println("Stelle das Zeilenende im SerialMonitor auf \"ZEILENUMBRUCH (CR)\""); Serial.println("*********************************************************************\n"); } void loop() { - psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten + psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten int nrOfAscii = sReader.readSerialData(readData, DN_ASCII_CR); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen) - if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden + if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden - if (readData[0] == '@') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) - strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '@') - psnClient.subscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) + //NEUEM CHATPARTNER FOLGEN + if (readData[0] == '@') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) + strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '@') + psnClient.subscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) - Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde + Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde Serial.print(readData); Serial.println(" abonniert."); } - else if (readData[0] == '!') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) - strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '!') - psnClient.unsubscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) + //CHATPARTNER ENTFOLGEN + else if (readData[0] == '!') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) + strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '!') + psnClient.unsubscribe(readData); //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners) - Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde + Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde Serial.print(readData); Serial.println(" nicht mehr abonniert."); } - - else if (readData[0] == '#') { //Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird) - //strcpy(topicPub, readData + 1); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#') - strcpy(topicPub, &readData[1]); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#') + //EIGENEN NAMEN ANLEGEN + else if (readData[0] == '#') { //Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird) + strcpy(topicPub, &readData[1]); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#') + //strcpy(topicPub, readData + 1); //-> Alternative zur Zeile oberhalb - Serial.print("Dein Name:\t"); //Ausgabe unter welchem Topic veröffentlicht wird + Serial.print("Dein Name:\t"); //Ausgabe unter welchem Topic veröffentlicht wird Serial.println(topicPub); } - - else { //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden + //NACHRICHT VERSCHICKEN (unter eigenem Namen) + else { //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden psnClient.publish(topicPub, readData); //Bereite eingegebene Daten zum Senden vor - Serial.print("Ich:\t"); //Ausgabe was unter deinem Topic veröffentlicht wird + Serial.print("Ich:\t"); //Ausgabe was unter deinem Topic veröffentlicht wird Serial.println(readData); } } diff --git a/examples/sPSN_Client1/sPSN_Client1.ino b/examples/sPSN_Client1/sPSN_Client1.ino index 0f4c43aa8d92bf81c78184c062d8df8ba7258c1c..2ba99f19df3c8532ff95da902fee8b9a4672e480 100644 --- a/examples/sPSN_Client1/sPSN_Client1.ino +++ b/examples/sPSN_Client1/sPSN_Client1.ino @@ -40,16 +40,16 @@ DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen -void newData(char* mTopic, char* mData) { - Serial.print("CB: "); - Serial.print(mTopic); - Serial.print(" | "); - Serial.println(mData); +void newData(char* topic, char* payload) { + Serial.print("New data from topic "); + Serial.print(topic); + Serial.print(": "); + Serial.println(payload); boolean static stateLED = false; //Wechsle Zustand der Variable "stateLED" wenn Taster beim Sender gedrueckt wurde - if(bool(atoi(mData)) == true){ + if(bool(atoi(payload)) == true){ stateLED = !stateLED; digitalWrite(LED_PIN, stateLED); //Setze Ausgang entsprechend dem empfangenen Wert } @@ -64,7 +64,6 @@ void setup() { pinMode(LED_PIN,OUTPUT); psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle - //psnClient.begin(Serial, clientCallback); //Starte PubSub Client an Serial Schnittstelle psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen } diff --git a/examples/sPSN_Client2/sPSN_Client2.ino b/examples/sPSN_Client2/sPSN_Client2.ino index 4b04bb5684a38d300ec0dc57e9d04e90de7d1c3f..61581fec61b31b41b1507c694c70783243dfa831 100644 --- a/examples/sPSN_Client2/sPSN_Client2.ino +++ b/examples/sPSN_Client2/sPSN_Client2.ino @@ -24,7 +24,7 @@ #define SERIAL_BAUD 2400 //lege Geschwindigkeit für serielle Schnittstellen fest #define LED_PIN 5 -#define LED2_PIN 6 +#define LED2_PIN 6 #define BUTTON_PIN 2 char topicPublish[MAX_LEN_TOPICS] = "btnState"; //Topic unter dem (eigene) Daten veröffentlicht werden @@ -33,20 +33,18 @@ char topicSubscribe[MAX_LEN_TOPICS] = "potiVal"; //Topic (von anderem TN) das SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz -UnblockingTimer uTimer; - //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen -void newData(char* mTopic, char* mData) { - Serial.print("CB: "); - Serial.print(mTopic); - Serial.print(" | "); - Serial.println(mData); +void newData(char* topic, char* payload) { + Serial.print("New data from topic "); + Serial.print(topic); + Serial.print(": "); + Serial.println(payload); - int valuePoti = atoi(mData); //wandle ASCII-Zeichen in Wert + int valuePoti = atoi(payload); //wandle ASCII-Zeichen in Wert //Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert - int valueLED = constrain(map(valuePoti, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert für analogWrite an + int valueLED = constrain(map(valuePoti, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert (0-1023) für analogWrite (0-255) an und begrenze analogWrite(LED_PIN, valueLED); //Setze Ausgang entsprechend dem empfangenen Wert analogWrite(LED2_PIN, 255-valueLED); //Setze Ausgang invertiert zum empfangenen Wert @@ -59,8 +57,7 @@ void setup() { sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen) psnClient.begin(sSerial, newData); //Starte PubSub Client an SoftwareSerial Schnittstelle - //psnClient.begin(Serial, clientCallback); //Starte PubSub Client an Serial Schnittstelle - + psnClient.subscribe(topicSubscribe); //Lege fest zu welchem Topic Daten empfangen werden sollen } diff --git a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino index 3222fde51f4244bb23296cac218736fc7c4c8a6a..b9cb74ec467b93f9d6f089cbab72fc75cef23f7f 100644 --- a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino +++ b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino @@ -29,11 +29,11 @@ SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen -void newData(char* mTopic, char* mPayload) { - Serial.print("Nachricht von: "); - Serial.print(mTopic); - Serial.print(" - "); - Serial.println(mPayload); +void newData(char* topic, char* payload) { + Serial.print("Topic: "); + Serial.print(topic); + Serial.print(" Nutzdaten: "); + Serial.println(payload); } diff --git a/examples/sPSN_PingTest/sPSN_PingTest.ino b/examples/sPSN_PingTest/sPSN_PingTest.ino index 14eebdda6a19d72b721d248713154f481535c4c9..6269e756ac4ce73385ab88df8f4beb380ad1ef3c 100644 --- a/examples/sPSN_PingTest/sPSN_PingTest.ino +++ b/examples/sPSN_PingTest/sPSN_PingTest.ino @@ -50,8 +50,8 @@ char payloadSend[] = "Ping"; bool ledState = true; -void newData(char* mTopic, char* mData) { - Serial.println(mData); +void newData(char* topic, char* payload) { + Serial.println(payload); digitalWrite(LED_BUILTIN, HIGH); } diff --git a/examples/sPSN_PongTester/sPSN_PongTester.ino b/examples/sPSN_PongTester/sPSN_PongTester.ino index d96ba58682fa5ea22fb04547af9f5aa576c49ab7..2eebc9ee99d3f2f45049a4c000dffe519018ca50 100644 --- a/examples/sPSN_PongTester/sPSN_PongTester.ino +++ b/examples/sPSN_PongTester/sPSN_PongTester.ino @@ -44,13 +44,13 @@ char payloadSend[] = "Pong"; bool ledState = true; -void newData(char* mTopic, char* mData) { - Serial.println(mTopic); +void newData(char* topic, char* payload) { + Serial.println(topic); //reply pong - strcpy(topicPub, mTopic); - if (!strcmp(mData, "Ping")) { //Empfangene Nachricht == Ping + strcpy(topicPub, topic); + if (!strcmp(payload, "Ping")) { //Empfangene Nachricht == Ping Serial.print(" "); - Serial.print(mTopic); + Serial.print(topic); psnClient.publish(topicPub, payloadSend); } }