String в i2c

dinz
Offline
Зарегистрирован: 07.04.2022

Добрый вечер. Подскажите, почему в документации библиотеки Wire указано, что мы можем отправить строку в виде последовательности байт.

Так работает:

#include <Wire.h>

void setup() {
  Wire.begin(); 
}

void loop() {
  Wire.beginTransmission(8);
  Wire.write("Hello");
  Wire.endTransmission();
  delay(100);
}

А так не работает:

#include <Wire.h>
String StringHello = "Hello";

void setup() {
  Wire.begin(); 
}

void loop() {
  Wire.beginTransmission(8);
  Wire.write(StringHello);
  Wire.endTransmission();
  delay(100);
}

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А так ?

Wire.write(StringHello.c_str());

dinz
Offline
Зарегистрирован: 07.04.2022

brokly пишет:

А так ?

Wire.write(StringHello.c_str());

Ого, работает, а можно подробнее? ))) Хочу понять, что бы не возникало в будущем глупых вопросов.

b707
Offline
Зарегистрирован: 26.05.2017

dinz пишет:

Ого, работает, а можно подробнее? ))) Хочу понять, что бы не возникало в будущем глупых вопросов.

потому что  "строка как последовательность байт" - это вовсе не про класс String, а char массив

rkit
Offline
Зарегистрирован: 23.11.2016

Потому что класс String это не массив байт, может быть? Читай основы языка.