Запуск команд из строки

У меня есть строка:

string s="digitalWrite(8,LOW);"

Есть ли способ запустить его как код?

, 👍1

Обсуждение

Нелегкий путь, поскольку для этого вам в основном потребуется написать библиотеку интерпретатора C/C++. Я не знаю такой библиотеки. Зачем вам это нужно? Чего вы пытаетесь достичь?, @chrisl

Для запуска команд, которые будут сохранены во внешнем eeprom, @rktech

У вас действительно есть такие сложные программы, которые нужно сохранять там, что вам нужен текст синтаксиса C? Вместо этого вы можете создать собственную структуру команд, которую будет проще интерпретировать. Какие команды нужно сохранить в EEPROM?, @chrisl

@chrisl спасибо, я забыл, что могу сделать это вот так, @rktech


1 ответ


Лучший ответ:

2

На самом деле это довольно просто:

if (s == "digitalWrite(8,LOW);") {
    digitalWrite(8,LOW);
}

Очевидно, что это не сработает, если s содержит любую другую строку... Если вы хотите что-то более общее, способное интерпретировать широкий спектр возможные команды, вам нужно будет определить язык и написать интерпретатор для этого языка. Судя по приведенному вами примеру, вы хотел бы, чтобы ваш язык выглядел как C++. скорее всего это плохо выбор дизайна. Если вам нужен интерпретатор, который понимает весь C++ язык: забудь. Вы никогда не поместите что-то такое большое в Ардуино Уно.

Вот, для вдохновения, очень простой интерпретатор. написал, что понимают следующие команды:

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)

Вы можете использовать его как основу для написания собственного интерпретатора. В противном случае вы можете выполнить поиск в Интернете для «интерпретатора Arduino»: вы должны быть в состоянии найти переводчиков, реализующих широкий спектр языков, в том числе компактные бинарные языки (Firmata), Forth ( еще один), Lisp, Basic и даже < a href="https://n.mtng.org/ele/arduino/iarduino.html">C-подобный язык.

,