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
Zuordnung von DS18B20 Adressen
26.10.2015, 10:54
Beitrag #33
RE: Zuordnung von DS18B20 Adressen
hallo binatone,
vielleicht bin ich schon einen Schritt weiter, allerdings sind Umwandlungen noch nicht so klar.
Ich lese von der Karte in ein array[40] 0x28,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF2
was muss ich machen um das als Beispiel in

DeviceAddress Kachelofen = {0x28,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF1};

zu überschreiben also den Inhalt von DeviceAddress auszutauschen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 11:04
Beitrag #34
RE: Zuordnung von DS18B20 Adressen
(26.10.2015 09:55)Jelimi schrieb:  Genauso kann ich sagen wer eine ino Datei nicht geöffnet kriegt wird mir auch nicht helfen... finde ich echt nicht gut.
Wenn Du meinst, dass ich Dir nicht helfen kann...

Zitat:Und ich hab gerade versucht, den Code einzustellen, wird aber wegen zu lang abgelehnt, so viel dazu.
Ich meinte ja auch nicht das ganze Ding, sondern nur den Teil, der den Fehler erzeugt. ...und dann noch vielleicht die Fehlermeldung selbst. Sonst ist das wirklich das große Ratespiel. Mir ist nämlich nicht klar, was daran schwierig sein soll.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 12:40
Beitrag #35
RE: Zuordnung von DS18B20 Adressen
(26.10.2015 10:54)Jelimi schrieb:  hallo binatone,
vielleicht bin ich schon einen Schritt weiter, allerdings sind Umwandlungen noch nicht so klar.
Ich lese von der Karte in ein array[40] 0x28,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF2
was muss ich machen um das als Beispiel in

DeviceAddress Kachelofen = {0x28,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF1};

zu überschreiben also den Inhalt von DeviceAddress auszutauschen


Du brauchst vermutlich ne Schleife

Code:
DeviceAdress Kachelofen;
for(int i=0;i<numberOfDevices; i++)
       {
            Kachelofen[i] = "nächstes Byte von Karte_Lesen";
        }

Aber wie gesagt, ich kenn das Datenformat nicht, von daher würde ich als erstes prüfen, wie der Arduino die Adresse denn gern hätte!

Sprich, ich gebe ne Adresse vor:
Code:
DeviceAddress Kachelofen = {0x28,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF1};
Und SPEICHER ich die erstmal ganz normal auf der Karte.
Dann schau ich mir die Daten am Rechner an.

Wird vermutlich nicht einfach werden.

Um die Daten am Rechner bearbeiten zu können, braucht es vermutlich ne Text Datei.
Also würde ich versuchen, die 8 einzelnen Bytes in Text zu wandeln,
damit ich diesen Text am PC dann bearbeiten kann.
Gleichzeitig wüsste ich, wie ich zurückwandeln kann, beim EINLESEN der Daten von Karte nach Arduino.

Binatone:


PS: Jungens... nicht zanken Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 13:06
Beitrag #36
RE: Zuordnung von DS18B20 Adressen
(26.10.2015 12:40)Binatone schrieb:  Um die Daten am Rechner bearbeiten zu können, braucht es vermutlich ne Text Datei.
Also würde ich versuchen, die 8 einzelnen Bytes in Text zu wandeln,
damit ich diesen Text am PC dann bearbeiten kann.
In welchem Format hättest Du es gerne? Mit sprintf (http://www.cplusplus.com/reference/cstdio/sprintf/) geht da einiges. Wahrscheinlich ist zweistelliges Hex ganz gut:
Code:
char cBuf[3];
sprintf(cBuf, "%02X", myByte);

Zitat:Gleichzeitig wüsste ich, wie ich zurückwandeln kann, beim EINLESEN der Daten von Karte nach Arduino.
Rückwärts geht mit sscanf. Ich bin mir aber nicht ganz sicher, ob das in der Arduino IDE vollständig implementiert ist. Aber die Umwandlung dürfte ja nicht so schwierig sein.
Zeig doch mal, was Du schon hast.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 13:26
Beitrag #37
RE: Zuordnung von DS18B20 Adressen
(26.10.2015 13:06)Thorsten Pferdekämper schrieb:  Zeig doch mal, was Du schon hast.

Gruß,
Thorsten

Das ist es ja...
Ich speichere die Adressen im EEprom, nicht auf Karte.
Die Bearbeitung (löschen, überschreiben etc.) geschieht direkt im Arduino über den Serial Monitor.

Klar kostet das massig Code, aber ich hab diesen Weg halt gewählt und (fast) umgesetzt.

Hier im Thread will man aber Die Adressen auf Speicherkarte bereitstellen, nachdem sie zuvor am Rechner bearbeitet wurden, was natürlich auch funktioniert.
Dazu muss man halt die Daten entsprechend wandeln, damit sie einerseits der Computer (Texteditor) kapiert und andersrum der Arduino.
Wobei ich leider nicht helfen kann, weil ich es in meinem Fall nicht brauche. Sad

Aber... er wird schon ne Möglichkeit finden...

Binatone
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 13:59
Beitrag #38
RE: Zuordnung von DS18B20 Adressen
Ich vermute ihr denkt jetzt zu kompliziert.
ich kenne die Adresse vom DS18B20 und die schreibe ich in ein Textfile:
Kachelofen 0x00,0x56,0xB2,0xD3,0x05,0x00,0x00,0xF2

und wenn meine Einleseroutine "Kachelofen" erkennt soll sie die folgenden 8 Hex Werte in die geschweiften Klammern schreiben mehr nicht

DeviceAddress Kachelofen = {hier sollen die 8 Hex Werte rein damit es so aussieht wie in der nächsten Zeile};
DeviceAddress Kachelofen = {0x00, 0x56, 0xB2, 0xD3, 0x05, 0x00, 0x00, 0xF2};
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 14:16
Beitrag #39
RE: Zuordnung von DS18B20 Adressen
(26.10.2015 13:59)Jelimi schrieb:  Ich vermute ihr denkt jetzt zu kompliziert.
Das kann schon sein, aber es ist halt ein gewisses Ratespiel, zu erkennen wo Du eigentlich das Problem hast.

Zitat:und wenn meine Einleseroutine "Kachelofen" erkennt soll sie die folgenden 8 Hex Werte in die geschweiften Klammern schreiben mehr nicht
DeviceAddress Kachelofen = {hier sollen die 8 Hex Werte rein damit es so aussieht wie in der nächsten Zeile};
DeviceAddress Kachelofen = {0x00, 0x56, 0xB2, 0xD3, 0x05, 0x00, 0x00, 0xF2};
Auch wenn Du partout das Stückchen Coding, mit dem Du das bisher versucht hast, nicht hier reinkopieren willst, versuche ich jetzt nochmal zu helfen.
Ich vermute mal, Du hast die 8 Bytes in ein Array mit 8 Bytes eingelesen. Also in etwa:
Code:
byte address[8];
// hier das coding, mit dem die 8 Bytes in address eingelesen werden
// [...]
// Und jetzt kommt das Kopieren in "Kachelofen"
for(int i = 0; i < 8; i++)
   Kachelofen[i] = address[i];
Falls das nicht funktioniert, dann zeig einfach mal die Fehlermeldung, die Du bekommst zusammen mit dem angemeckerten Coding inklusive ein paar Zeilen drüber und drunter.
(Nein, momentan kann ich wirklich keine Datei in der IDE öffnen, da mir der Kunde, auf dessen Rechner ich hier arbeite, das gar nicht erlauben würde.)
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.10.2015, 16:12
Beitrag #40
RE: Zuordnung von DS18B20 Adressen
Mittlerweile befürchte ich, das Problem liegt ganz woanders.
Habe folgendes probiert:
Wenn ich DeviceAddress Kachelofen = {40,86,178,211,5,0,0,242};
in den Kopf des Programmes schreibe wird die Temperatur angezeigt.
Das einlesen von SD folgender Zeile
"40/86/178/211/5/0/0/242/ DS_Kachelofen"
sieht so aus (viele Serialprint zum testen)

Code:
if (strstr(linebuf,"DS_Kachelofen")){
  char lesen[4];
  int lesearray[8];
  int j = 0; int z = 0; int i = 0;
  do{
   if (linebuf[i] != 47){ //sucht nach /
    lesen[z] = linebuf[i];
    z++;
    Serial.print(i); Serial.print("---"); Serial.println(linebuf[i]);
   }
   else{
    lesearray[j]=atoi(lesen);
    Serial.print(j);Serial.print("  "); Serial.println(lesearray[j]);
    j++; z = 0;
    memset(lesearray,0,4);
   }
   i++;
  } while (j < 8);

for (i = 0; i < 8; i++){
  Serial.print(lesearray[i]);Serial.print(",");
}
// DeviceAddress Kachelofen = {lesearray[0],lesearray[1],lesearray[2],lesearray[3],lesearray[4],lesearray[5],lesearray[6],lesearray[7]};
//  DeviceAddress Kachelofen = {40,86,178,211,5,0,0,242};

Serial.print(lesearray[i]);Serial.print(","); gibt folgendes aus:40,86,178,211,5,0,0,242,

das ist ja korrekt und steht dann ja auch in
// DeviceAddress Kachelofen = {lesearray[0],lesearray[1],lesearray[2],lesearray[3],lesearray[4],lesearray[5],lesearray[6],lesearray[7]};

jetzt aber das große aber: wenn ich das auskommentiere und
DeviceAddress Kachelofen = {40,86,178,211,5,0,0,242};
abtiviere geht es auch nicht

also liegt wohl kein Fehler in der Programmierung vor sondern es geht einfach nicht wenn man die DeviceAddress nicht im Kopf deklariert.
Das wäre natürlich extrem blöd.....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  DS18B20 - Zeit beim Auslesen verkürzen? ArduPI 3 1.354 09.01.2015 19:00
Letzter Beitrag: ArduPI
  Arduino UNO + DS18B20+ Temperaturschaltung robin 13 6.545 06.02.2014 19:47
Letzter Beitrag: robin
  Scanner für I2C-Adressen? alpenpower 2 3.956 11.09.2013 18:39
Letzter Beitrag: alpenpower

Gehe zu:


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