Istanziare array di byte

di il
6 risposte

Istanziare array di byte

Ciao a tutti, come da titolo ho qualche problema nell'istanziare un array di byte! Vi incollo il codice per chiarezza :

INTERFACCIA
#ifndef __MYETHERNET__
#define __MYETHERNET__
  
#include <Arduino.h>
#include <Ethernet.h>

/*Interfaccia che definisce le funzionalita 
  del ethernet Shield.*/

class MyEthernet {
  public:
	  MyEthernet();
	  void connect(); // Metodo che inizializza la connessione dello shield alla rete
	  void sendEmail(); // Metodo per inviare le email ai destinatari prestabiliti.
  private:
	  void getResponse(); // Riceve il messaggio dal server di posta SMTP.
	  void sendMsg(String m); // Invia il messaggio al server di posta SMTP.
  	  byte mac[6] ; // Indirizzo MAC dello Shield.
  	  byte ip[4]; // Indirizzo IP assegnato allo Shield.
	  byte server[4];// IP del server SMTP di Alice( out.alice.it ).
	  String serverName;// Nome dell'host SMTP di alice.
          String sender; // Mittente della email
  	  String recipient[]; // Destinatari a cui recapitare la mail.
          String mailObject; // Oggetto della email
	  String bodyMsg; // Corpo del messaggio della mail.
          String ServerResponse; // Risposta del server
          EthernetClient client; // Oggetto della classe EthernetClient (libreria di Arduino)
};
#endif
CLASSE CHE IMPL. L'INTERFACCIA
#include "Ethernet.h"
#include <SPI.h>  
#include "MyEthernet.h"


MyEthernet::MyEthernet(){
  this->mac[6] = { 0x90, 0xA2, 0xDA, 0x00, 0x23, 0x5D };
  this->ip[4] = {192, 168, 1, 15 };
  this->server[4] = {82, 57, 200, 132};
  this->serverName = "out.alice.it";
  this->sender = "funduino@uno.it";
  this->recipient[2] =  "baldmarc@alice.it", "emanuele.bondi2@yahoo.it";
  this->mailObject = "Movimento rilevato";
  this->bodyMsg = "Ciao sono Funduino";
  
}

void MyEthernet::connect() {
    Serial.begin(9600);
    Ethernet.begin(mac, ip);
}

void MyEthernet::sendEmail() {
  Serial.println("sendEmail");
  for(int i = 0; i < 6; i++)
  Serial.print(mac[i]);
  Serial.println();
  for(int i = 0; i < 4; i++)
  Serial.print(ip[i]);
  Serial.println();
  for(int i = 0; i < 4; i++)
  Serial.print(server[i]);
  Serial.println();
  this->bodyMsg = "ciao";
  if (client.connect(server, 25)) {

    this->sendMsg("EHLO " + this->serverName);

    this->sendMsg("MAIL From:<" + this->sender + ">");

    this->sendMsg("RCPT To:<" + this->recipient[0] + ">");

    this->sendMsg("DATA");

    this->sendMsg("To: " + this->recipient[0]);

    this->sendMsg("From: " + this->sender);

    this->sendMsg("Subject: " + this->mailObject);

    this->sendMsg("");
    this->sendMsg(this->bodyMsg);
    this->sendMsg("");
    this->sendMsg(".");
    this->sendMsg("QUIT");

    client.println();
  }
  else {
    Serial.println("connection failed");
  }
}

void MyEthernet::getResponse() {
  if (client.available()) {
    char c = client.read();
    while (client.available()) { // Store command char by char.
      ServerResponse += c;
      c = client.read();
    }
    Serial.println("<<<" + ServerResponse);
    ServerResponse = "";
  }
}

void MyEthernet::sendMsg(String m) {
  client.println(m);
  Serial.println(">>>" + m);
  delay(1000);
  this->getResponse();
};
Se c'è un linguaggio di programmazione che non sò, quello è il C++ quindi scusatemi se vedete delle eresie!

6 Risposte

  • Re: Istanziare array di byte

    Evita di farci leggere tutto il sorgente e dicci dove hai errori e quali ... "qualche problema" non aiuta ...
  • Re: Istanziare array di byte

    Nella classe concreta ad esempio mi da errore nel istanziare
    this->mac = { 0x90, 0xA2, 0xDA, 0x00, 0x23, 0x5D}
    e l'errore è:

    "errore: expected primary-expression before '{' token"
  • Re: Istanziare array di byte

    Non puoi inizializzare un vettore membro in quel modo.

    Devi scrivere

    mac[0] = 0x90;
    mac[1] = 0xA2;
    ...
  • Re: Istanziare array di byte

    Si ho risolto proprio cosi infatti, ma pensavo ci fosse un metodo un po più concido! Sai venendo dal Java / C# ...Grazie mille comunque della risposta!
  • Re: Istanziare array di byte

    SsaLaroLana ha scritto:


    Si ho risolto proprio cosi infatti, ma pensavo ci fosse un metodo un po più concido! Sai venendo dal Java / C# ...Grazie mille comunque della risposta!
    Un metodo più conciso esiste nelle nuove versioni di C++ ...
  • Re: Istanziare array di byte

    Mi sono dimenticato di dire che sto programmando su Arduino ( sinceramente non apprezzo il framework wired )...
Devi accedere o registrarti per scrivere nel forum
6 risposte