Здравствуйте, помогите пожалуйста объединить два скетча
Код для создания Ping:
#include
#include
#include
#include
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield
byte ip[] = {192,168,0,177}; // ip address for ethernet shield
IPAddress pingAddr(0,0,0,0); // ip address to ping
SOCKET pingSocket = 0;
char buffer [256];
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));
void setup()
{
// start Ethernet
Ethernet.begin(mac, ip);
Serial.begin(9600);
DNSClient dns;
dns.begin(Ethernet.dnsServerIP());
dns.getHostByName("ya.ru",pingAddr); // at this point the function works
}
void loop()
{
ICMPEchoReply echoReply = ping(pingAddr, 4);
if (echoReply.status == SUCCESS)
{
sprintf(buffer,
"Reply[%d] from: %d.%d.%d.%d: bytes=%d time=%ldms TTL=%d",
echoReply.data.seq,
echoReply.addr[0],
echoReply.addr[1],
echoReply.addr[2],
echoReply.addr[3],
REQ_DATASIZE,
millis() - echoReply.data.time,
echoReply.ttl);
}
else
{
sprintf(buffer, "Echo request failed; %d", echoReply.status);
}
Serial.println(buffer);
delay(500);
}
Код для отправки сообщения:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//структура для сообщения
struct Message
{
String From;//адрес отправителя
String To;// адрес получателя
String Subject;// Тема письма
String Body;// Текст письма
};
//mac адрес устройства (можно не менять)
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x05 };
//IP адрес адруины (можно не менять)
IPAddress ip(192,168,1,48);
// IP smtp сервера
IPAddress server(87,250,251,50);
// IP других сереров можно найти в инете
// логин и пароль к почтовому сервису
char login[] = "A........@yandex.ru";//
char password[] = "A.......";
// создаем экземпляр клиента
EthernetClient client;
void setup(){
Serial.begin(9600);// UART
Ethernet.begin(mac,ip);// Запускаем шилд
Serial.println("Start");
}
void loop(){
while(Serial.available()){
char inSerialChar = 0;
inSerialChar = Serial.read();
if(inSerialChar == 's'){
SendMessage();// При отправке в дуину ‘s’, отправляем сообщение.
}
}
}
// метод подключения к серверу
bool connectToServer(){
if(client.connected()){
}
else{
if(client.connect(server,25)){
return true;
}
else{
return false;
}
}
}
// метод отправки сообщения
void SendMessage(){
Serial.println("Please wite…");
LogPass();
Message message = {
"A.......@yandex.ru",
"B......@yandex.ru",
"Проба пера",//тема
"Огромный привет от Ардуино!!!!" };//само сообщение
client.println("MAIL From:<"+message.From+">");
delay(250);
client.println("RCPT To:<"+message.To+">");
delay(250);
client.println("DATA");
delay(250);
client.println("From:"+message.From);
client.println("To:"+message.To);
client.println("Subject:"+message.Subject);
delay(250);
client.println(message.Body);
delay(250);
client.println(".");// поприходуточкисерверставитсообщениевочередь
delay(250); // на отправку
client.println("QUIT");// как только закрыли соединение, сообщение улетает
delay(250);
Serial.println("Message sending…");
}
// подключение к серверу и авторизация
void LogPass(){
char array[64];// массив для кодирования
if(connectToServer()){
client.println(F("helo 1.2.3.4"));
delay(250);
client.println(F("AUTH LOGIN"));
delay(250);
client.println(strToBase64(login));
delay(250);
client.println(strToBase64(password));
delay(250);
}
else{
Serial.println("Server not connected…");
}
}
// кодировка Base64
String strToBase64(char str[]){
char charArray[64];
base64_encode(charArray,str,strlen(str));
String result = charArray;
return result;
}