Forum: Mikrocontroller und Digitale Elektronik xml senden/empfangen auf arduino


von Markus (Gast)


Lesenswert?

HI Leute,

ich habe eine aufgabe vom prof erhalten und brauche hilfe dabei. ich 
soll mit 2 arduinos eine XML komunikation aufbauen mittels 
Funkverbindung. also es sollen XML Dateien von einem zum anderen arduino 
(uno) geschickt werden. der Empfänger soll diese Datei "analysieren" und 
die befehle ausführen.

gibt es dafür biblitheken?
vielleicht schon Programm?

mein Programm für die funkkommunikation (Sender und Empfänger) besteht 
schon, eventuell kann man das so ändern bzw erweitern, das es mit XML 
läuft. dieses Programm ist keine Bedingung, ich bin auch offen für 
andere Programme.
1
#include <SPI.h>
2
3
#include "RF24.h"
4
5
RF24 radio(9, 10);
6
7
const uint64_t pipes[2] = {
8
9
0xF0F0F0F000LL, 0xF0F0F0F0FFLL};
10
11
12
13
void setup(){
14
  
15
  Serial.begin(9600);
16
  radio.begin();
17
  radio.setDataRate(RF24_250KBPS); // Übertragungsrate
18
  radio.setChannel(100); // Kanalnummer von 0 bis 127
19
  radio.setRetries(15,15); // Anzahl der Versuche und die Zeit zwischen den Versuchen
20
  radio.openWritingPipe(pipes[1]); // Offene Kanal
21
  radio.openReadingPipe(1, pipes[0]); // Öffnen Sie eine der 6-Kanal-Empfang
22
  radio.startListening(); // Beginnen Sie zu hören
23
  
24
}
25
26
27
28
void loop(){
29
  
30
  if(Serial.available()){
31
    
32
    char data[32] = "";
33
    byte i = 0;
34
    
35
    while(Serial.available()){
36
      
37
      data[i] = Serial.read(); //erhalten Daten von der seriellen.
38
      i++;
39
      delay(2);
40
    }
41
    
42
    data[i] = 0;
43
    
44
    radio.stopListening();
45
    
46
    radio.write(&data, 32); //und senden sie an Arduino № 2
47
    
48
    radio.startListening();
49
  }
50
  
51
  
52
  if(radio.available()){
53
    
54
    char data[32] = "";
55
    
56
    radio.read(&data, 32); //zurück, ein Paket von Arduino № 2 akzeptieren
57
    
58
    Serial.println(data); // und geben es zurück zur Show1
59
  }
60
61
}

vielen dank schon mal im voraus

: Bearbeitet durch User
von Frank (Gast)


Lesenswert?

XML-Parsing ist Textanalyse, das ist gerade etwas, wofür der Arduino 
mangels größerem RAM denkbar ungeeignet ist.

Für XML-Parsing gibts natürlich Libs "wie Sand am Meer", aber 
ausgerechnet Arduino ist dafür so ziemlich die ungeegnetste Plattform 
überhaupt (obwohl ich ansonsten Arduino-Fan bin!!!).

Frag' mal deinen Prof, obs nicht auch mit einer anderen Hardware geht 
(Pi z.B.)?

von MaWin (Gast)


Lesenswert?

XML senden ist kein wirkliches Problem, das ist ja nur eine aufgeblähte 
Textdatei. Aber XML emofangen bedeutet, alle Zeichensätze zu kennen, die 
DTD zu interpretieren, die Variabilität von XML was Position von 
Information und übersprungenen Inhalten angeht zu akzeptieren, also do 
was wie die megsbytegrosse MSXNL/Xerxes einzubinden.
Und nutzt man die besonderen Eigenschaften NICHT, ist XML blöde wie ein 
Loch im Knie, und eine simple Zeichenfolge täte es.

von Karl H. (kbuchegg)


Lesenswert?

Jetzt malt mal nicht den Teufel an die Wand.
Ich bin mir ziemlich sicher, dass sein Prof es akzeptiert, wenn er ein 
paar Einschränkungen für das XML fordert, welche die Möglichkeiten von 
XML ein wenig abspecken.

Wenn der eine Ardunino zum anderen
1
<Command>
2
  <Config>
3
    <Pin>
4
      <Number>5</Number>
5
      <Direction>Output</Direction>
6
    </Pin>
7
  </Config>
8
  <SetPort>
9
    <Pin>5</Pin>
10
    <Value>1</Value>
11
  </SetPort>
12
</Command>

überträgt und der andere parst das, während die Übertragung läuft und 
führt die beiden enthaltenen Kommandos aus, dann wird sein Prof das 
schon (zumindest für erste) akzeptieren.

Das ein Ardunio kein PC ist, der 2 Megabyte XML zwischenspeichern kann 
und den auch Unicode nicht ausser Tritt bringt, wird wohl jeder 
problemlos als geforderte Voraussetzung schlucken.
Und sooo schwer ist so ein vereinfachtes XML dann auch wieder nicht zu 
parsen, wenn man ein wenig mit Strings umgehen kann.

: Bearbeitet durch User
von Markus (Gast)


Lesenswert?

Danke für die schnelle Antworten.

Mit (kleine) Einschränkungen kann man Leben, es sollte aber schon über 
XML laufen, weil mehr als nur diese 2 arduinos damit gesteuert werden 
sollen.


vielleicht, erzähle ich euch, was genau gemacht werden soll.


es soll mittels arduinos

1. zb. ein raum gesteuert werden, licht ein/ausschalten bzw dämmen. 
Rollläden gesteuert werden usw.

2. anderes aduino das zb. Touchscreen hat, steuern bzw was man mit dem 
Touchscreen gesteuert werden kann, soll gesteuert werden.

und noch mehr Sachen, die ich nicht kenne und die noch in Planung sind 
bzw angefangen wurden.

also alle arduinos sollen über XML kommunizieren.


die 1. gehört zu meinem Projekt.


wenn es irgend etwas dazu gibt, wäre ich sehr dankbar, wenn es hier 
gepostet wird.


Frank schrieb:
> Frag' mal deinen Prof, obs nicht auch mit einer anderen Hardware geht
> (Pi z.B.)?
das geht leider nicht, weil manche Projekte schon angefangen wurden bzw. 
fertig sind. Außerdem, ist die Hardware schon vorhanden und es dient 
alles einer zukünftigen Vorlesung die darauf aufbaut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.