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
virtual wire empfänger-sender
15.04.2019, 14:24
Beitrag #25
RE: virtual wire empfänger-sender
Prüfe mal myFile ab:
Code:
File myFile = SD.open("lab.txt", FILE_WRITE | O_APPEND);
        if (myFile) {
          myFile.print(h);
          myFile.print(" labtop ");
          myFile.println(t);
          myFile.close();
        }
        else Serial.println("Error bei fopen");
Wenn Du da auf einen Error läufst, musst Du erst mal mit einem Beispielprogramm aus Deiner SD-Lib das Problem lösen. Wenn nicht, ich sehe im Moment keinen auffälligen Fehler.

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
15.04.2019, 16:06
Beitrag #26
RE: virtual wire empfänger-sender
(15.04.2019 14:24)Tommy56 schrieb:  Prüfe mal myFile ab:
Code:
File myFile = SD.open("lab.txt", FILE_WRITE | O_APPEND);
        if (myFile) {
          myFile.print(h);
          myFile.print(" labtop ");
          myFile.println(t);
          myFile.close();
        }
        else Serial.println("Error bei fopen");
Wenn Du da auf einen Error läufst, musst Du erst mal mit einem Beispielprogramm aus Deiner SD-Lib das Problem lösen. Wenn nicht, ich sehe im Moment keinen auffälligen Fehler.

Gruß Tommy
Hallo Tommy

Habe bald ein schlechtes gewissen.Das SD Beispiel funktioniert problemlos. Ich habe festgestellt das das Programm das speichern einfach überspringt. Die Files werden am Anfang auf der Karte erstellt und initialisiert aber dann bleibt sie leer.
Code:
void loop() {
  // put your main code here, to run repeatedly:
  byte id;
  int h, t;
  if (id = empfange()) {
    if (id == 0xff) Serial.println("Fehler");
    else {
      sscanf(buf + 2, "%d,%d", &h, &t); // die ersten beiden Bytes überspringen
      // Hier kannst Du dann je nach id in Deine Files schreiben.
      Serial.print("ID:   "); Serial.print(id); Serial.print("  ");
      Serial.print("Humi: "); Serial.print(h); Serial.print("  ");
      Serial.print("Temp: "); Serial.println(t / 10);
      if (buf[0] == 144)
      {
        Serial.print("das ist Labtop  "); Serial.print(h); Serial.print("  "); Serial.println(t / 10);
        File myFile = SD.open("lab.txt", FILE_WRITE | O_APPEND);
        if (myFile) {
          myFile.print(h);
          myFile.println(t);
          myFile.close();
        }
        else Serial.println("Error bei fopen");
      }
    }
  }
könnte es sein das man die Daten zuerst noch umwandeln müsste.
Gruss Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.04.2019, 16:25
Beitrag #27
RE: virtual wire empfänger-sender
Das schreibt beide Werte direkt hintereinander:
Code:
myFile.print(h);
          myFile.println(t);
also aus 12 und 34 wird 1234. Ich weiß nicht, ob das gewollt ist.
Das Initialisieren im Setup ist unnötig.

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
16.04.2019, 19:31
Beitrag #28
RE: virtual wire empfänger-sender
Hallo Tommy.
Das programm funktioniert tip top bis zum speichern. Ich habe heute auf alle arten versucht das gespeichert werden kann. Leider ohne erfolg. kannst du mal schauen was ich nicht sehe. Sonst gehe ich wirklich holzhacken.
Gruss und Danke für deine nachsicht.
Peter
Code:
#include <VirtualWire.h>
#include <SPI.h>
#include <SD.h>
File myFile;
//const int chipSelect = 4;
//int pinCS = 10;
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
int mal ;
int h, t;
//******************************************
// return: 0 = nichts da, 0x90/0x99 = ID, 0xff = Fehler
//******************************************
byte empfange() {
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen))
  {
    Serial.print("buflen: "); Serial.print(buflen, HEX);
    buf[buflen] = '\0';  // Abschluss der Zeichenkette
    Serial.print("Byte 0: "); Serial.print(buf[0], HEX);
    Serial.print("Byte 1: "); Serial.println(buf[1], HEX);
    if (buf[0] == 0x1) return buf[1]; // ID
    else return 0xff;
  }
  else return 0;
}
//******************************************
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
if (!SD.begin(4)) {
    Serial.println("initialization fehler!");
    return;
  }
  Serial.println("initialization gut.");
myFile = SD.open("pc.txt", FILE_WRITE);
  myFile.close();
  Serial.println("File  pc erstellt");
  myFile = SD.open("lab.txt", FILE_WRITE);
  myFile.close();
  Serial.println("File lab erstellt");
  vw_setup(2000);
  vw_set_rx_pin(7);
  vw_rx_start();
}
//*******************************************
void loop() {
  // put your main code here, to run repeatedly:

  byte id;
  int h, t;
  if (id = empfange()) {
    if (id == 0xff) Serial.println("Fehler");
    else {
      sscanf(buf + 2, "%d,%d", &h, &t); // die ersten beiden Bytes überspringen
      // Hier kannst Du dann je nach id in Deine Files schreiben.
      Serial.print("ID:   "); Serial.print(id); Serial.print("  ");
      Serial.print("Humi: "); Serial.print(h); Serial.print("  ");
      Serial.print("Temp: "); Serial.println(t / 10);
    }
    //******************* ende test *****************
    if (buf[0] = 0x90, HEX)
    {
            Serial.print(h); Serial.print("  "); Serial.println(t / 10);
    }
    if (buf[0] = 0x99, HEX)
    {
      Serial.print(h); Serial.print("  "); Serial.println(t / 10);
    }
   speicher();  //meldung - Error bei fopen
  }
}
//*********** Bis hierher ist alles IO ausser Speichern *****************

void speicher()   //  daten speichern
{
// uint8_t buf[VW_MAX_MESSAGE_LEN];    // keine aenderung
//  uint8_t buflen = VW_MAX_MESSAGE_LEN; //keine aenderung
  mal++;                                           // zaehlen und versuchen zu speichern
  Serial.print("MAL  "); Serial.println(mal);
  myFile = SD.open("lab.txt", FILE_WRITE);
  {
    if (myFile) {
      myFile.write(mal);
      myFile.write(h);          //versuch mit DEC und HEX es werden keine daten
      myFile.print(" ");         // geschrieben
      myFile.write(t / 10);
      myFile.close();
    }
    else  Serial.println("Error bei fopen");        //keine fehlermeldung
  }
  lesen(); //meldung - error opening lesen txt
}
//******************************************
void lesen()   //schauen ob etwas auf der Karte gespeichert ist
{
  myFile = SD.open("lab.txt");  //kontrolle ist etwas gespeichert
  if (myFile) {
    Serial.println("lab.txt:");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  } else
    Serial.println("error opening lesen txt");      //keine fehlermeldung
}

Also die Beispielprogramme gehen tadellos.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.04.2019, 20:06
Beitrag #29
RE: virtual wire empfänger-sender
Ich bin gerade nur per Tablett unterwegs.
Hast Du normale, erfolgreiche Schreib- und Lesevorgänge auf der SD mit den Beispielen machen können?

Vorher hat anderes keinen Sinn.

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
16.04.2019, 23:04
Beitrag #30
RE: virtual wire empfänger-sender
(16.04.2019 20:06)Tommy56 schrieb:  Ich bin gerade nur per Tablett unterwegs.
Hast Du normale, erfolgreiche Schreib- und Lesevorgänge auf der SD mit den Beispielen machen können?

Vorher hat anderes keinen Sinn.

Gruß Tommy

hallo tommy.
Ich habe alle beispiele gemacht. Es gab keine lese oder schreibprobleme. Auch mit andern programmen die ich gemacht habe,kein problem. Ich abe nur gesehen das ich bei dem andern programm die Sensoren aktiviert habe.
Also zb. float h = dht.readHumidity(); //sensors.requestTemperature() etwa so.
Da hier die werte schon da sind sollten sie ja eigentlich gespeichert werden.
Code:
void speicher()
{ // - + cs/4 mosi/11 sck/13 miso/12
  float plo = atof(StringReceived);
  ++spt;
  float h = dht.readHumidity();    // Lesen der Luftfeuchtigkeit und speichern in die Variable h
  float t = dht.readTemperature(); // Lesen der Temperatur in °C und speichern in die Variable t
  sensors.requestTemperatures();
  myFile = SD.open("umwelt.txt", FILE_WRITE | O_APPEND);
  myFile.print(h);
  myFile.print(" ");
  myFile.print(t);
Sorry das ich dich inmmer noch bemühe.
Gruss Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.04.2019, 07:21
Beitrag #31
RE: virtual wire empfänger-sender
Deine Variablen h und t sind lokal in loop.
Die musst Du entweder global machen oder als Parameter an speichern übergeben.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Empfänger funktioniert nicht mehr jgrothe 5 374 06.09.2019 18:57
Letzter Beitrag: Tommy56
  [Vorstellung] Serieller Sender ohne 2. MC Tommy56 2 440 13.04.2019 22:03
Letzter Beitrag: Tommy56
  Probleme mit DCF-77 Empfänger von Pollin unkreativ 11 1.236 04.04.2019 10:48
Letzter Beitrag: unkreativ
  Wire.requestFrom Blende8 7 965 27.03.2019 15:54
Letzter Beitrag: Blende8
  Wire.write und Client Socket LiVe 3 627 11.01.2019 13:51
Letzter Beitrag: Tommy56
  Funknetz mit vielen Sendern und einem Empfänger Hi72 18 1.671 20.12.2018 12:48
Letzter Beitrag: Hi72
  Problem mit Wire.available() abfrage avoid 1 1.109 11.01.2018 13:40
Letzter Beitrag: Tommy56
  [gelöst] wire.h blockiert analogRead Rupert 6 3.631 08.12.2016 18:03
Letzter Beitrag: hotsystems
  DCF77 Empfänger paq 19 6.005 23.07.2016 17:16
Letzter Beitrag: rkuehle
  Mega: Hardware i2c bus speed (Wire.) verändern? HaWe 10 10.260 14.07.2016 20:09
Letzter Beitrag: Mathias

Gehe zu:


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