Как отправить строку на мастер с помощью i2c
Я хочу написать программу Arduino, которая просто получает строку (через библиотеку I2C Wire) от главного устройства Arduino, затем ждет запроса и отправляет эту строку обратно.
Вот мой код:
#include <Wire.h>
void setup()
{
Wire.begin(4);
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
}
String data = "";
void loop()
{
}
void receiveEvent(int howMany)
{
data = "";
while( Wire.available()){
data += (char)Wire.read();
}
}
void requestEvent()
{
Wire.write(data);
}
Я прочитал в API, что функция write() принимает строку, но я продолжаю получать ошибку «Нет соответствующей функции для вызова». Я попытался просто заменить
Wire.write(data);
с
Wire.write("test");
и это сработало без ошибок. Почему так?
@Hoytman, 👍5
Обсуждение1 ответ
Лучший ответ:
▲ 12
data
— это <code>Строка</code>. "test"
— это char*
. <code>Wire.write()</code> не имеет прототипа, который принимает Строку
.
Wire.write(data.c_str());
,
@Ignacio Vazquez-Abrams
работает отлично :), @opu 웃
Смотрите также:
- Прокрутка текста I2C
- Странное поведение с массивами char/uint8
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- Отправка и получение различных типов данных через I2C в Arduino
- форматирование строк в Arduino для вывода
- Как работают функции вне цикла void?
- Очень простая операция Arduino Uno Serial.readString()
Попробуйте это вместо wire.write(data);, @newy8