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) 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. ![]() |
|||
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 ![]() |
|||
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 |
|||
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. |
|||
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 ![]() ![]() |
|||
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 !!! |
|||
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. |
|||
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 |
|||
|
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
Map funktion bei Fernsteuerung | marsmännchen | 7 | 150 |
Gestern 12:42 Letzter Beitrag: hotsystems |
|
Millis verzögern Funktion? | malsehen | 14 | 576 |
29.03.2018 21:47 Letzter Beitrag: hotsystems |
|
Serieller string zwischenspeichern und wieder ausgeben. | Matt | 15 | 805 |
03.03.2018 20:23 Letzter Beitrag: Tommy56 |
|
byte´s zu einem String zusammenfassen ? | Franz54 | 18 | 1.107 |
31.01.2018 10:10 Letzter Beitrag: MicroBahner |
|
Eine Funktion verlassen | Jan5663 | 8 | 761 |
18.12.2017 13:49 Letzter Beitrag: Chopp |
|
Arrays of String in C | Diskusguppy | 3 | 367 |
16.12.2017 10:12 Letzter Beitrag: Diskusguppy |
|
String nach Byte Array in ASCII-Codierung | nexus1212 | 7 | 904 |
05.11.2017 14:36 Letzter Beitrag: Tommy56 |
|
String vergleichen | georg01 | 15 | 1.855 |
18.07.2017 20:35 Letzter Beitrag: Tommy56 |
|
String.charAt() | ardun | 3 | 649 |
02.07.2017 15:28 Letzter Beitrag: Tommy56 |
|
Aus char string machen | metzgefa | 1 | 716 |
06.05.2017 15:15 Letzter Beitrag: Tommy56 |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste