Привет, можете помочь с глупым вопросом? Я получаю по wifi массив uint8_t buffer. Нужно записать его на сд карту. Если сделать так, то в файлик сохраняется просто 0. Код (C++): dataString += String(buffer[128], len); saveSD(); Как сделать это правильно?
Говнокод наверное еще тот Спойлер Код (C++): #include <SPI.h> #include <SD.h> #include "ESP8266.h" #include "TroykaRTC.h" #include <Wire.h> #define SD_CS_PIN 9 #define SSID "COM731SWIFI2" #define PASSWORD "BABAKAPPA" #define LEN_TIME 12 #define LEN_DATE 12 #define LEN_DOW 12 ESP8266 wifi(Serial1); String dataString = ""; uint8_t buffer[128] = {0}; RTC clock; char time[LEN_TIME]; char date[LEN_DATE]; char weekDay[LEN_DOW]; void saveSD() { File dataFile = SD.open("datalog.txt", FILE_WRITE); dataFile; dataFile.println(dataString); dataFile.close(); Serial.println("Save OK"); } void setup(void) { Serial1.begin(115200); Serial.begin(9600); clock.begin(); clock.set(__TIMESTAMP__); SD.begin(SD_CS_PIN); wifi.setOprToStationSoftAP(); if (wifi.joinAP(SSID, PASSWORD)) { Serial.print("Join AP success\r\n"); Serial.print("IP: "); Serial.println(wifi.getLocalIP().c_str()); } else { Serial.print("Join AP failure\r\n"); } wifi.enableMUX(); wifi.startTCPServer(8090); wifi.setTCPServerTimeout(10); } void loop(void) { uint8_t mux_id; uint32_t len = wifi.recv(mux_id, buffer, sizeof(buffer), 100); dataString = ""; if(buffer, len == 1){ // digitalWrite(8,HIGH); //dataString += "Door open"; // dataString += " "; //dataString += "Тут время"; //saveSD(); delay(120); len = wifi.recv(mux_id, buffer, sizeof(buffer), 100); clock.read(); clock.getTimeStamp(time, date, weekDay); dataString += String(buffer[128], len); dataString += " "; dataString += String(time); saveSD(); Serial.print(String(buffer[128], len)); Serial.print("]\r\n"); } }
Ну, если ты уверен, что получаешь текст, а не что-то другое, то попробуй вместо dataString += String(buffer[128], len); написать buffer[len] = 0; dataString += buffer;
Ну, поставь перед buffer (char *). А вообще, если не компилится, всегда показывай как вставил и текст сообщения.
Блин, ну я же Вам писал как делать! Чего бред-то писать? dataString += (char *) buffer; Если не компилируется, то 1. код 2. текст сообщения об ошибке Без этого я прекращаю разговор.