INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Parameterübergabe bei Wire.write()
04.12.2019, 19:43
Beitrag #1
Parameterübergabe bei Wire.write()
Hallo,

ich habe versuchsweise zwei UNOs per I2C gekoppelt, einer fordert Daten vom anderen an. Funktioniert, aber ich habe folgendes Problem: Ich kann aus eine array z. B. 7 Zeichen ab Index 0 übertragen. Mir geling es aber nicht, aus einem array 7 Zeichen ab Index 10 (also Indizes 10 bis 16) zu übertragen. Meine Versuche dazu unten im Code.

Was mache ich falsch, hat jemand eine Idee?

Viele Grüße
GuaAck

Code:
#ifdef Serialstattwire

  for (int i = 0; i < 7; i++) {
    Serial.print(" 0x");
    Serial.print(Sendepuffer[Start + i], HEX);
  }
  Serial.println();
#else
// >>>>Das möchte ich sinngemäß: 7 Zeichen aus einem byte-array senden:
   Wire.write(Sendepuffer[Start],7); // Compiler Fehler: overloaded 'write..' is ambigous

// >>>>Das habe ich noch versucht:
//  Wire.write(Sendepuffer[0]); // 1. Zeichen richtig, dann alles 0xFF
//  Wire.write(Sendepuffer,7); // alle Zeichen richtig
//  Wire.write((uint8_t*)Sendepuffer[Start],7); // Compiliert, sendet aber wirre Zeichen
//  Wire.write((uint8_t*)Sendepuffer[0],7); //Compiliert, sendet aber wirre Zeichen
#endif
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.12.2019, 19:51
Beitrag #2
RE: Parameterübergabe bei Wire.write()
Ich gehe mal davon aus, dass Sendepuffer ein Bytearray ist.

Dann ginge
Code:
wire.write(Sendepuffer+10,7); // Pointerberechnung Anfang + 10 Bytes
// oder
wire.write(&Sendepuffer[10],7); // Adresse des Elements mit dem Index 10

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.12.2019, 20:02
Beitrag #3
RE: Parameterübergabe bei Wire.write()
Vielen Dank Tommy,
das suchte ich, es geht jetzt bestens, perfekt.
Viele Grüße
GuaAck
P.S.: Ja, ist ein Bytearray.


(04.12.2019 19:51)Tommy56 schrieb:  Ich gehe mal davon aus, dass Sendepuffer ein Bytearray ist.

Dann ginge
Code:
wire.write(Sendepuffer+10,7); // Pointerberechnung Anfang + 10 Bytes
// oder
wire.write(&Sendepuffer[10],7); // Adresse des Elements mit dem Index 10

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  virtual wire empfänger-sender peterfried 30 2.394 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Wire.requestFrom Blende8 7 1.152 27.03.2019 15:54
Letzter Beitrag: Blende8
  Wire.write und Client Socket LiVe 3 692 11.01.2019 13:51
Letzter Beitrag: Tommy56
  Problem mit Wire.available() abfrage avoid 1 1.186 11.01.2018 13:40
Letzter Beitrag: Tommy56
  Serial.write fraju 5 2.044 23.07.2017 21:57
Letzter Beitrag: Mathias
  [gelöst] wire.h blockiert analogRead Rupert 6 3.828 08.12.2016 18:03
Letzter Beitrag: hotsystems
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 1.880 16.09.2016 20:36
Letzter Beitrag: Datatom
  Serial.write Mathias 6 2.948 29.07.2016 17:06
Letzter Beitrag: Mathias
  Mega: Hardware i2c bus speed (Wire.) verändern? HaWe 10 10.659 14.07.2016 20:09
Letzter Beitrag: Mathias
  Funktion mit Parameterübergabe - u8g torsten_156 8 3.186 22.06.2016 18:53
Letzter Beitrag: Pit

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste