[W5100] WebServer и переменная типа char[]

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013
#include <SPI.h>
#include "RF24.h"
#include <Ethernet.h>
RF24 radio(7, 8);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xFE };
IPAddress ip(192,168,1,10);
EthernetServer server(80);

const uint64_t pipes[2] = {0xF0F0F0F000LL, 0xF0F0F0F0FFLL};
// адреса каналов приема и передачи
char data[16] = "";

void setup(){
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  radio.begin();  
  radio.setDataRate(RF24_250KBPS); // Скорость передачи
  radio.setChannel(100); // Номер канала от 0 до 127
  radio.setRetries(15,15); // Кол-во попыток и время между попытками
  radio.openWritingPipe(pipes[1]);  // Открываем канал передачи
  radio.openReadingPipe(1, pipes[0]); // Открываем один из 6-ти каналов приема
  radio.startListening(); // Начинаем слушать эфир
}

void loop(){
  
  EthernetClient client = server.available();
  if (client.connected()) {
  client.println ("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'");
  client.println ("<html>");
  client.println ("<head> ");
  client.println ("<meta http-equiv= refresh  content=60;>");
  client.println ("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");
  client.println ("</head> ");
  client.println ("<body>");
  client.println(data);
  client.println ("</body>");
  client.println("</html>");
  client.stop();
  }
  
  if(Serial.available()){
    char data[5] = "";
    for (int i=0; i<5; i++) {
      data [i] = Serial.read ();
      delay (50);
//      Serial.print (data[i]);
    }
//    Serial.println ();
    radio.stopListening();
    radio.write(&data, 5);
    radio.startListening();
  }
  
  if(radio.available()){
    radio.read(&data, 16);
    Serial.print(data);
  }
}

Данные с удаленного датчика получает, в чериал переменную char data[] выводит нормально, но эту же самую строку вида DHT21H35T23.4>, выводит только >

Уже и в цикл вида

 for (int i=0; i<16; i++) {
client.print (data[i]);
}

выводил, но все равно одно и то же ">" и больше ничего...

char не выводит Ethernet?

maksim
Offline
Зарегистрирован: 12.02.2012
char data[5] = "";
for (int i=0; i<16; i++) {
  client.print (data[i]);
}

 

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

maksim пишет:

char data[5] = "";
for (int i=0; i<16; i++) {
  client.print (data[i]);
}

 

пробовал, выводит 

>



 

maksim
Offline
Зарегистрирован: 12.02.2012

Что пробовали? Это не проба, а указание на ошибку. Наводящий вопрос: Чем отличается 5 от 16 ?

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

maksim пишет:

Что пробовали? Это не проба, а указание на ошибку. Наводящий вопрос: Чем отличается 5 от 16 ?

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

maksim
Offline
Зарегистрирован: 12.02.2012

Вам, как новичку, лучше использовать статические массивы. Обьявляйте размер с запасом.

ingener.solovyev
Offline
Зарегистрирован: 12.02.2013

Попробую прислушаться.