Open source na T5L-based SMTP Mailer

Ang isyung ito para sa iyo na itulak ang isang napakapraktikal na Diwen Developer Forum na award-winning na open source case - T5L-based smtp mail sender , ginagamit ng mga inhinyero ang T5L smart screen , sa pamamagitan ng WiFi module upang ma-access ang smtp server , upang makamit ang function ng pagpapadala ng mga email sa administrator, ang pagpapatakbo ng screen upang ipasok ang email address ng tatanggap, pamagat ng email, nilalaman ng email at iba pang impormasyon ay maaaring ipasok sa screen.Kapansin-pansin na sinusuportahan din ng nilalaman ng email ang plain text, mga kontrol sa pagsasaayos, pagtatakda ng kulay ng teksto at iba pang paraan ng pag-edit.

1. Arkitektura ng Programa

Kinokontrol ng T5L smart screen ang module ng WiFi upang makipag-ugnayan sa smtp server sa pamamagitan ng serial port 5 upang makamit ang function ng pagpapadala ng email.

ava (1)

2.Pagpapaunlad ng Interface

Kinukumpleto ng DGUS software ang pagbuo ng display at touch functions sa pamamagitan ng superposition ng mga layer.Kailangan lang ng mga user na i-load ang mga inihandang larawang materyales sa DGUS software at i-set up ang display at touch functions.

ava (2)

1. C51SmadalasDesign

Nakikipag-ugnayan ang T5L smart screen serial port 5 sa module ng WiFi para makumpleto ang pakikipag-ugnayan sa smtp server.Ang bahagi ng pangunahing code ay ang mga sumusunod:

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;

}

walang bisa u5_send_byte(u8 byte)

{

SBUF3_TX = byte;

habang(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes(u8 *bytes,u16 len)

{

u16 i;

para sa(i=0;i

{

SBUF3_TX = byte;

habang(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void get_input(u8 * val,u8 len)

{

u8 i;

para sa(i=0;i

{

kung(val==0xff)

{

val = 0x00;

val[i+1] = 0x00;

bumalik;

}

}

}

u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime,u8 clearBuffer)

{

u8 res=0;

rx_sta=0;

kung(ack&&waittime&&cmd)

{

habang(--waittime)

{

sys_delay_ms(10);

kung(rx_sta&0X8000)

{

kung(esp8266_check_respond(ack))

pahinga;

}

}

if(waittime==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

bumalik res;

}

typedef struct{

u8 cmd;

u8 email[20];

u8 pangalan[20];

pamagat ng u8[20];

u8 msg[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 tumugon[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

u8 server[30];

u8 port[30];

u8 username[30];

u8 auth_code[30];

u8 rx_sta;

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

kung(btn_val)

{

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

kung(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,username,15);

sys_read_vp(0x3260,auth_code,15);

get_input(server,30);

get_input(port,30);

get_input(username,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);

kung(btn_val2!=old_val)

{

kung(btn_val2==1)

sys_write_vp(0x3060,"Ito ay isang email mula sa 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,"MatapangPula\0\0",30);

old_val = btn_val2;

}


Oras ng post: Okt-31-2023