Ochiq manba T5L asosidagi SMTP Mailer

Bu siz uchun juda amaliy Diwen Developer Forum mukofotiga sazovor bo'lgan ochiq manbali ishni surish uchun - T5L-ga asoslangan smtp pochta jo'natuvchisi, muhandislar smtp serveriga kirish, elektron pochta xabarlarini yuborish funktsiyasiga erishish uchun WiFi moduli orqali T5L aqlli ekranidan foydalanadilar. administratorga , qabul qiluvchining elektron pochta manzilini, elektron pochta sarlavhasini, elektron pochta tarkibini va boshqa ma'lumotlarni kiritish uchun ekranning ishlashi ekranga kiritilishi mumkin.Shuni ta'kidlash kerakki, elektron pochta tarkibi oddiy matnni, konfiguratsiyani boshqarishni, matn rangini sozlashni va boshqa tahrirlash usullarini ham qo'llab-quvvatlaydi.

1.Dastur arxitekturasi

T5L aqlli ekrani elektron pochta xabarlarini yuborish funktsiyasiga erishish uchun 5-seriyali port orqali smtp serveri bilan o'zaro aloqa qilish uchun WiFi modulini boshqaradi.

ava (1)

2. Interfeysni ishlab chiqish

DGUS dasturiy ta'minoti qatlamlarning superpozitsiyasi orqali displey va sensorli funktsiyalarni ishlab chiqishni yakunlaydi.Foydalanuvchilar faqat tayyorlangan rasm materiallarini DGUS dasturiga yuklashlari va displey va teginish funksiyalarini sozlashlari kerak.

ava (2)

1. C51Stez-tezDesign

T5L aqlli ekranli seriyali port 5 smtp serveri bilan o'zaro aloqani yakunlash uchun WiFi moduli bilan bog'lanadi.Asosiy kodning bir qismi quyidagicha:

void uart5_init(u32 bod)

{

SCON3T = 0x80;

SCON3R = 0x80;

bod = (u32)((juft)(FOSC/8.0)/bod);

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

BODE3_DIV_L = uzatish&0xff;

ES3R = 0;

ES3T = 0;

}

bekor u5_send_byte (u8 bayt)

{

SBUF3_TX = bayt;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

bekor u5_send_bytes(u8 *bayt,u16 len)

{

u16 i;

uchun(i=0;i

{

SBUF3_TX = baytlar;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val, u8 len)

{

u8 i;

uchun(i=0;i

{

agar(val==0xff)

{

val = 0x00;

val[i+1] = 0x00;

qaytish;

}

}

}

u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 kutish vaqti, u8 clearBuffer)

{

u8 res=0;

rx_sta=0;

agar(ack&&waittime&&cmd)

{

while(--kutish vaqti)

{

sys_delay_ms(10);

if(rx_sta&0X8000)

{

agar(esp8266_check_respond(ack))

sindirish;

}

}

if(kutish vaqti==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

qaytish res;

}

typedef tuzilishi{

u8 cmd;

u8 email[20];

u8 nomi[20];

u8 sarlavhasi[20];

u8 xabar[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 javob[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

u8 server[30];

u8 port[30];

u8 foydalanuvchi nomi[30];

u8 auth_code[30];

u8 rx_sta;

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

agar(btn_val)

{

agar(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));

agar(rx_sta)

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

}alse 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);

}alse if(btn_val==3)

{

sys_read_vp (0x3200, server, 15);

sys_read_vp (0x3220, port, 15);

sys_read_vp (0x3240, foydalanuvchi nomi, 15);

sys_read_vp (0x3260, autent_kod, 15);

get_input(server,30);

get_input (port, 30);

get_input(foydalanuvchi nomi,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)

{

agar(btn_val2==1)

sys_write_vp(0x3060,"Bu T5Ldan kelgan elektron pochta!\0\0",30);

Aks holda (btn_val2==2)

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

Aks holda (btn_val2==3)

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

old_val = btn_val2;

}


Xabar vaqti: 2023-yil 31-oktabr