Запуск команд из строки
У меня есть строка:
string s="digitalWrite(8,LOW);"
Есть ли способ запустить его как код?
@rktech, 👍1
Обсуждение1 ответ
Лучший ответ:
На самом деле это довольно просто:
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-подобный язык.
- Возможно ли, чтобы функция возвращала строку ИЛИ число, в зависимости от адреса
- Очень простая операция Arduino Uno Serial.readString()
- Как преобразовать строку в массив байтов
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Arduino: как записать значение переменной в текстовый файл и изменить его на SD-карте?
- Буфер char в String в Arduino UNO
- Как передать несколько переменных в функцию?
Нелегкий путь, поскольку для этого вам в основном потребуется написать библиотеку интерпретатора C/C++. Я не знаю такой библиотеки. Зачем вам это нужно? Чего вы пытаетесь достичь?, @chrisl
Для запуска команд, которые будут сохранены во внешнем eeprom, @rktech
У вас действительно есть такие сложные программы, которые нужно сохранять там, что вам нужен текст синтаксиса C? Вместо этого вы можете создать собственную структуру команд, которую будет проще интерпретировать. Какие команды нужно сохранить в EEPROM?, @chrisl
@chrisl спасибо, я забыл, что могу сделать это вот так, @rktech