SMTP Mailer с отворен код, базиран на T5L

Този проблем за вас, за да прокарате много практичен награден случай с отворен код на форума за разработчици на Diwen - базиран на T5L smtp изпращач на поща, инженерите използват интелигентния екран T5L чрез WiFi модула за достъп до smtp сървъра, за да постигнат функцията за изпращане на имейли към администратора, операцията на екрана за въвеждане на имейл адреса на получателя, заглавието на имейла, съдържанието на имейла и друга информация може да бъде въведена на екрана.Струва си да се отбележи, че съдържанието на имейла също поддържа обикновен текст, контроли за конфигурация, задаване на цвят на текста и други методи за редактиране.

1.Програмна архитектура

Смарт екранът T5L контролира WiFi модула, за да взаимодейства със smtp сървъра през сериен порт 5, за да постигне функцията за изпращане на имейл.

ава (1)

2. Разработка на интерфейс

Софтуерът DGUS завършва разработката на функции за дисплей и докосване чрез наслагване на слоеве.Потребителите трябва само да заредят подготвените картинни материали в софтуера DGUS и да настроят функциите на дисплея и докосването.

ава (2)

1. C51SсофтуерDesign

T5L интелигентен екран сериен порт 5 комуникира с WiFi модул, за да завърши взаимодействието със smtp сървъра.Част от основния код е както следва:

void uart5_init(u32 бода)

{

SCON3T = 0x80;

SCON3R = 0x80;

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

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

BODE3_DIV_L = baud&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte(u8 байт)

{

SBUF3_TX = байт;

докато (! (SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *байтове,u16 len)

{

u16 i;

за (i=0;i

{

SBUF3_TX = байтове;

докато (! (SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 len)

{

u8 i;

за (i=0;i

{

ако (вал==0xff)

{

стойност = 0x00;

val[i+1] = 0x00;

връщане;

}

}

}

u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 време за изчакване,u8 clearBuffer)

{

u8 res=0;

rx_sta=0;

ако (ack&&време за изчакване&&cmd)

{

докато (--време за изчакване)

{

sys_delay_ms(10);

ако (rx_sta&0X8000)

{

if(esp8266_check_respond(ack))

прекъсване;

}

}

if(време за изчакване==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

връщане на res;

}

typedef структура {

u8 cmd;

u8 имейл [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 код_за_удостоверяване[30];

u8 rx_sta;

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

ако (btn_val)

{

ако (btn_val==1)

{

sys_read_vp(0x3000,имейл_информация.име,10);

sys_read_vp(0x3020,имейл_информация.имейл,10);

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

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

get_input(имейл_информация.име,20);

get_input(имейл_информация.имейл,20);

get_input(имейл_информация.заглавие,20);

get_input(имейл_информация.msg,60);

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

ако (rx_sta)

send_mail(имейл_информация.имейл,имейл_информация.заглавие,имейл_информация.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,порт,15);

sys_read_vp(0x3240,потребителско име,15);

sys_read_vp(0x3260,auth_code,15);

get_input(сървър,30);

get_input(порт,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);

ако (btn_val2!=old_val)

{

ако (btn_val2==1)

sys_write_vp(0x3060,"Това е имейл от T5L!\0\0",30);

иначе ако (btn_val2==2)

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

иначе ако (btn_val2==3)

sys_write_vp(0x3060,"Удебеленчервен\0\0",30);

стара_вал = btn_вал2;

}


Време на публикуване: 31 октомври 2023 г