INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
String als Funktion einsetzen
24.02.2014, 12:56
Beitrag #1
String als Funktion einsetzen
Hallo zusammen,

ich bin noch recht unerfahren was Programmierung angeht.
Ist es möglich eine per TCP empfangene Zeichenkette als Teil des Codes zu nutzen.
Ich weiss gar nicht genau wie ichs am besten erklär.

Ich hab mir das ungefähr so gedacht. Funktioniert halt leider nicht

Code:
if (chars.indexOf("#") > -1)
                {
                  
                    String conv  = chars.substring(chars.indexOf("?") + 1, chars.indexOf("#")) ;
                  
                    client.println(conv);
              
                    chars = "";
                }

Mein Gedanke war dass ich per netcat die Zeichenfolge
Code:
?(analogRead(A1))#

an den Arduino sende, daraus dann der Befehl

Code:
client.println(analogRead(A1));

entsteht, und ich als netcat Response den ausgelesenen Wert erhalte.
Bekommen tue ich aber natürlich :

Code:
(analogRead(A1))

Gibt es irgendeine Möglichkeit auf diese Art mit dem Arduino zu kommunizieren, oder liegt das Problem darin dass ich bestehenden Code verändern will?

Ich hoffe die Frage ist nicht allzu dumm. Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2014, 16:51
Beitrag #2
RE: String als Funktion einsetzen
Hallo kikdiweg,
Zitat:Ich hoffe die Frage ist nicht allzu dumm.
Nö, die Frage ist nicht dumm, im Gegentum!

Warum sendest du per netcat nicht einfach nur "A1"? Das Ding landet ja dann in irgendeinem Puffer/Variable des Arduino, den du vorher vereinbarst.
Den Wert aus dem Puffer/Variable übergibst du dann dem Befehl analogRead direkt als Parameter und bekommst dann was zurück.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2014, 20:40
Beitrag #3
RE: String als Funktion einsetzen
Hi, danke fuer deine Antwort.


Der Plan war dass ich auf dem arduino nur diese eine Anweisung schreiben muss, per netcat die komplette Funktion übergebe (z.b.: digitalWrite (31, HIGH);)und diese dann wie eine Variable in den Code eingesetzt wird.


Dann koennte man ohne ständig Anpassungen am Arduino vorzunehmen jede erdenkliche Aktion übers Netz anstoßen.

Wird aber wohl nicht so leicht funktionieren wie ich mir das vorstell. Hab da bestimmt irgendeinen Denkfehler drin.

Oder ist es so dass nur werte in ( ) per variable gesetzt
können, und wenn ja warum?


Gruß Nikolaus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2014, 23:52 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2014 23:53 von Thorsten Pferdekämper.)
Beitrag #4
RE: String als Funktion einsetzen
Hi,
Der Arduino kann so ohne weiteres die Zeichenketten nicht interpretieren. Wenn Du ein
Programm schreibst, dann wird es vom PC für den Arduino übersetzt. D.h. der Arduino kann kein C oder C++, sondern nur irgendwas für Menschen nicht vernünftig lesbares.
Für einen kompletten Interpreter reicht wahrscheinlich der Speicher im Arduino nicht aus.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2014, 09:37
Beitrag #5
RE: String als Funktion einsetzen
Hallo Thorsten

Ich glaub jetzt versteh ichs. Die IDE setzt meinen C++ Code in maschinenlesebaren Code um.
Ich habe versucht direkt C++ Code zu übergeben.

Könnte ich dann ,rein theoretisch gefragt, meinen netcat Befehl am PC durch einen Interpreter laufen lassen um dann Binärcode an den Arduino zu schicken?


Will niemandem auf die Nerven gehn, ich frag nur meist solang bis ichs ganz verstanden hab RolleyesIdea
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2014, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2014 09:53 von burgi650.)
Beitrag #6
RE: String als Funktion einsetzen
Nein, so einfach geht es nicht.

Du kannst aber Funktionen vordefinieren, die dann vom Arduino ausgeführt werden.

ZB du schickst den "H" an den Arduino und danach im nächsten Byte einen Wert und daraus eine vorgegebene Funktion aufrufen.

Über Serial.read() liesst du einen String ein
http://arduino.cc/en/Serial/read#.UwxZjpim2WY
H für Ausgang und dann ein Byte mit dem Wert 13 um pinMode (eingangswert, HIGH) zu schreiben.
L für Ausgang und dann ein Byte mit dem Wert 13 um pinMode (eingangswert, LOW) zu schreiben.

Dann kannst den mit einer If oder Select case oder so auswerten.

Das ist ein ganz grobes Beispiel, aber so kannst deine Funktion über einen kleinen Umweg realisieren.

Uwe

Martin Luther King sagte am 28 August 1963 :

I have a Dream !!

Ich bin weiter:

I have a Schaltplan !!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2014, 10:10
Beitrag #7
RE: String als Funktion einsetzen
(25.02.2014 09:37)Kikdiweg schrieb:  Könnte ich dann ,rein theoretisch gefragt, meinen netcat Befehl am PC durch einen Interpreter laufen lassen um dann Binärcode an den Arduino zu schicken?
Also erst einmal wäre das dann ein Compiler und kein Interpreter. Ansonsten glaube ich nicht, dass das die Arduino-Architektur mitmacht, da der Programmspeicher vom Datenspeicher getrennt ist. Das Programm ist in einem "nichtflüchtigen" Speicherbereich abgelegt, an den Du (glaube ich) per Programm nicht einfach so drankommst. Auf der anderen Seite glaube ich, dass es schwierig wäre, an eine Stelle im "Datenspeicher" zu springen.
D.h. Du könntest schon irgendwie das C++übersetzt an den Arduino schicken, aber er kann's dann trotzdem nicht ausführen.
In obigem Text sind einige Annahmen. Vielleicht geht das doch irgendwie. Ich bin mir aber ziemlich sicher, dass es wesentlich mehr Aufwand wäre, als Dir selbst einen kleinen Interpreter für eine einfache Sprache zu schreiben. (Siehe Beitrag von burgi650.) Ich glaube, dass Firmata so was in der Richtung macht.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2014, 10:45
Beitrag #8
RE: String als Funktion einsetzen
Ok, dann halt doch so.

Danke euch nochmal,
ihr habt mir ein ganzes Stück weitergeholfen die grundlegenden Zusammenhänge ein bisschen besser zu verstehen.

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  String / HTTP Request Marc2014 2 58 Gestern 09:05
Letzter Beitrag: amithlon
  String zusammensetzen Mathias 13 550 01.09.2016 21:15
Letzter Beitrag: Mathias
  String-Array füllen? torsten_156 9 452 08.07.2016 20:07
Letzter Beitrag: amithlon
  String in EEPROM Speichern BennIY 2 416 27.06.2016 10:23
Letzter Beitrag: BennIY
  Funktion mit Parameterübergabe - u8g torsten_156 8 401 22.06.2016 18:53
Letzter Beitrag: Pit
  String - Buchstabenposition auswerten scritch 5 663 01.04.2016 16:25
Letzter Beitrag: rkuehle
  Funktion in Loop einmalig ausführen Haustechno 4 646 09.03.2016 22:43
Letzter Beitrag: Haustechno
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 301 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  HC-05 Modul auf Funktion prüfen. arduinofan 2 365 03.02.2016 19:18
Letzter Beitrag: arduinofan
  Eine Funktion vorher definieren ? arduinofan 23 2.023 30.12.2015 08:42
Letzter Beitrag: amithlon

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste