SMTP Mailer ανοιχτού κώδικα που βασίζεται σε T5L

Αυτό το θέμα για να προωθήσετε μια πολύ πρακτική θήκη ανοιχτού κώδικα βραβευμένη από το Diwen Developer Forum - αποστολέας αλληλογραφίας smtp που βασίζεται σε T5L , οι μηχανικοί χρησιμοποιούν την έξυπνη οθόνη T5L, μέσω της μονάδας WiFi για πρόσβαση στον διακομιστή smtp, για να επιτύχουν τη λειτουργία αποστολής μηνυμάτων ηλεκτρονικού ταχυδρομείου στον διαχειριστή, η λειτουργία της οθόνης για την εισαγωγή της διεύθυνσης email του παραλήπτη, του τίτλου του email, του περιεχομένου του email και άλλων πληροφοριών μπορεί να εισαχθεί στην οθόνη.Αξίζει να σημειωθεί ότι το περιεχόμενο email υποστηρίζει επίσης απλό κείμενο, στοιχεία ελέγχου διαμόρφωσης, ρύθμιση χρώματος κειμένου και άλλες μεθόδους επεξεργασίας.

1.Αρχιτεκτονική Προγράμματος

Η έξυπνη οθόνη T5L ελέγχει τη μονάδα WiFi για αλληλεπίδραση με τον διακομιστή smtp μέσω της σειριακής θύρας 5 για την επίτευξη της λειτουργίας αποστολής email.

ava (1)

2.Ανάπτυξη διεπαφής

Το λογισμικό DGUS ολοκληρώνει την ανάπτυξη των λειτουργιών οθόνης και αφής μέσω της υπέρθεσης των επιπέδων.Οι χρήστες χρειάζεται μόνο να φορτώσουν τα προετοιμασμένα υλικά εικόνας στο λογισμικό DGUS και να ρυθμίσουν τις λειτουργίες οθόνης και αφής.

ava (2)

1. C51SλογισμικούDυποσημείωση

Η σειριακή θύρα 5 της έξυπνης οθόνης T5L επικοινωνεί με τη μονάδα WiFi για να ολοκληρώσει την αλληλεπίδραση με τον διακομιστή smtp.Μέρος του κύριου κώδικα έχει ως εξής:

void uart5_init(u32 baud)

{

SCON3T = 0x80;

SCON3R = 0x80;

baud = (u32)((double)(FOSC/8.0)/baud);

BODE3_DIV_H = (baud>>8)&0xff;

BODE3_DIV_L = baud&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte (u8 byte)

{

SBUF3_TX = byte;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *bytes,u16 len)

{

u16 i;

για(i=0;i

{

SBUF3_TX = byte;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 len)

{

u8 i;

για(i=0;i

{

if(val==0xff)

{

val = 0x00;

val[i+1] = 0x00;

ΕΠΙΣΤΡΟΦΗ;

}

}

}

u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 χρόνος αναμονής,u8 clearBuffer)

{

u8 res=0;

rx_sta=0;

if (αποδοχή&&χρόνος αναμονής&&cmd)

{

ενώ (--χρόνος αναμονής)

{

sys_delay_ms(10);

if(rx_sta&0X8000)

{

if(esp8266_check_respond(ack))

Διακοπή;

}

}

if(waittime==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

επιστροφή res?

}

typedef struct{

u8 cmd;

u8 email[20];

u8 όνομα[20];

u8 τίτλος[20];

u8 msg[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 ανταποκρίνονται[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

διακομιστής u8[30];

Θύρα u8[30];

όνομα χρήστη u8[30];

u8 auth_code[30];

u8 rx_sta;

sys_read_vp(0x1000,(u8*)&btn_val,1);

if(btn_val)

{

if(btn_val==1)

{

sys_read_vp(0x3000,email_info.name,10);

sys_read_vp(0x3020,email_info.email,10);

sys_read_vp(0x3040,email_info.title,10);

sys_read_vp(0x3060,email_info.msg,30);

get_input(email_info.name,20);

get_input(email_info.email,20);

get_input(email_info.title,20);

get_input(email_info.msg,60);

send_packet((u8*)&email_info,sizeof(EMAIL_INFO));

if(rx_sta)

send_mail(email_info.email,email_info.title,email_info.msg);

}άλλο εάν(btn_val==2)

{

sys_read_vp(0x3100,wifi_name,15);

sys_read_vp(0x3120,wifi_passwd,15);

get_input(wifi_name,30);

get_input(wifi_passwd,30);

}άλλο εάν(btn_val==3)

{

sys_read_vp (0x3200, διακομιστής, 15);

sys_read_vp(0x3220,port,15);

sys_read_vp(0x3240,όνομα χρήστη,15);

sys_read_vp(0x3260,auth_code,15);

get_input(server,30);

get_input(port,30);

get_input(όνομα χρήστη,30);

get_input(auth_code,30);

}

 

btn_val = 0;

sys_write_vp(0x1000,(u8*)&btn_val,1);

}

sys_read_vp(0x2050,(u8*)&btn_val2,1);

if(btn_val2!=old_val)

{

if(btn_val2==1)

sys_write_vp(0x3060,"Αυτό είναι ένα email από το T5L!\0\0",30);

αλλιώς εάν(btn_val2==2)

sys_write_vp(0x3060," \0\0",30);

αλλιώς if(btn_val2==3)

sys_write_vp(0x3060,"Τολμηρόςτο κόκκινο\0\0",30);

old_val = btn_val2;

}


Ώρα δημοσίευσης: Οκτ-31-2023