I have a string:
string s="digitalWrite(8,LOW);"Is there any way to run it as a code?
- Not an easy way, since you basically would need to write a C/C++ interpreter library for this. I don't know of such a library. Why do you need to do this? What are you trying to achieve?chrisl– chrisl2020-03-14 10:30:37 +00:00CommentedMar 14, 2020 at 10:30
- To run commands that will be saved in external eepromrktech– rktech2020-03-14 10:38:24 +00:00CommentedMar 14, 2020 at 10:38
- Do you really have such complex programs to save there, that you need C syntax text there? Instead you could build your own command structure, which can be way easier to interpret. What commands do you need to save in the EEPROM?chrisl– chrisl2020-03-14 10:52:30 +00:00CommentedMar 14, 2020 at 10:52
- @chrisl thank you, I forgot that I can do it like thisrktech– rktech2020-03-14 11:34:53 +00:00CommentedMar 14, 2020 at 11:34
1 Answer1
This is actually pretty simple:
if (s == "digitalWrite(8,LOW);") { digitalWrite(8,LOW);}Obviously, it will not work iss contains any other string... If youwant something more general, that is able to interpret a wide range ofpossible commands, you will have to define a language, and write aninterpreter for that language. From the example you give, it seems youwould like your language to look like C++. This is most likely a baddesign choice. If you want an interpreter that understands the whole C++language: forget it. You will never fit something this big into anArduino Uno.
Here is, for inspiration,a very simple interpreter Iwrote that understand the following commands:
mode <pin> <mode>: pinMode()read <pin>: digitalRead()aread <pin>: analogRead()write <pin> <value>: digitalWrite()awrite <pin> <value>: analogWrite()echo <value>: set echo off (0) or on (1)You can use it a basis for writing your custom interpreter. Otherwiseyou can do a Web search for “Arduino interpreter”: you should be able tofind interpreters implementing a wide variety of languages, includingcompact binary languages (Firmata),Forth (another one),Lisp,Basic, and evena C-like language.
Explore related questions
See similar questions with these tags.
