Ачык булак T5L негизиндеги SMTP почтасы

Бул маселе сиз үчүн абдан практикалык Diwen Developer Forum сыйлыгын алган ачык булактуу кейс - T5L негизиндеги smtp почта жөнөтүүчүсү, инженерлер T5L акылдуу экранын колдонушат, WiFi модулу аркылуу smtp серверине кирүү, электрондук каттарды жөнөтүү функциясына жетишүү. администраторго, алуучунун электрондук почта дарегин, электрондук почтанын аталышын, электрондук почтанын мазмунун жана башка маалыматтарды киргизүү үчүн экрандын иштеши экранга киргизилиши мүмкүн.Белгилей кетчү нерсе, электрондук почтанын мазмуну ошондой эле жөнөкөй текстти, конфигурацияны башкарууну, тексттин түсүн орнотууну жана башка түзөтүү ыкмаларын колдойт.

1. Архитектура программасы

T5L акылдуу экраны электрондук почтаны жөнөтүү функциясына жетүү үчүн 5 сериялык порт аркылуу smtp сервери менен иштешүү үчүн WiFi модулун башкарат.

ava (1)

2. Интерфейсти өнүктүрүү

DGUS программасы катмарлардын суперпозициясы аркылуу дисплей жана тийүү функцияларын иштеп чыгууну аяктайт.Колдонуучулар даярдалган сүрөт материалдарын DGUS программасына жүктөп, дисплей жана тийүү функцияларын жөндөшү керек.

ava (2)

1. C51SoftwareDesign

T5L акылдуу экрандын сериялык порту 5 WiFi модулу менен байланышып, smtp сервери менен өз ара аракеттенүүнү аяктайт.Негизги коддун бир бөлүгү төмөнкүдөй:

void uart5_init(u32 boud)

{

SCON3T = 0x80;

SCON3R = 0x80;

boud = (u32)((кош)(FOSC/8.0)/baud);

BODE3_DIV_H = (бауд>>8)&0xff;

BODE3_DIV_L = boud&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte(u8 байт)

{

SBUF3_TX = байт;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *байт,u16 лен)

{

u16 i;

for(i=0;i

{

SBUF3_TX = байт;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 лен)

{

u8 i;

for(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(ack&&waittime&&cmd)

{

while(--күтүү убактысы)

{

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 структурасы{

u8 cmd;

u8 email[20];

u8 name[20];

u8 title[20];

u8 msg[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 жооп[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

u8 server[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);

}else if(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);

}else if(btn_val==3)

{

sys_read_vp(0x3200,server,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,"Бул T5Lден келген электрондук кат!\0\0",30);

else if(btn_val2==2)

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

else if(btn_val2==3)

sys_write_vp(0x3060,"BoldКызыл\0\0",30);

old_val = btn_val2;

}


Посттун убактысы: 31-окт.2023