Pengirim SMTP berasaskan T5L sumber terbuka

Isu ini untuk anda menolak kes sumber terbuka yang memenangi anugerah Forum Pembangun Diwen yang sangat praktikal - penghantar mel smtp berasaskan T5L , jurutera menggunakan skrin pintar T5L , melalui modul WiFi untuk mengakses pelayan smtp , untuk mencapai fungsi menghantar e-mel kepada pentadbir, pengendalian skrin untuk memasukkan alamat e-mel penerima, tajuk e-mel, kandungan e-mel dan maklumat lain boleh dimasukkan pada skrin.Perlu diingat bahawa kandungan e-mel juga menyokong teks biasa, kawalan konfigurasi, menetapkan warna teks dan kaedah penyuntingan lain.

1.Seni Bina Program

Skrin pintar T5L mengawal modul WiFi untuk berinteraksi dengan pelayan smtp melalui port bersiri 5 untuk mencapai fungsi penghantaran e-mel.

ava (1)

2.Pembangunan Antaramuka

Perisian DGUS melengkapkan pembangunan fungsi paparan dan sentuhan melalui superposisi lapisan.Pengguna hanya perlu memuatkan bahan gambar yang disediakan ke dalam perisian DGUS dan menyediakan fungsi paparan dan sentuhan.

ava (2)

1. C51SoftwareDesign

Port bersiri skrin pintar T5L 5 berkomunikasi dengan modul WiFi untuk melengkapkan interaksi dengan pelayan smtp.Sebahagian daripada kod utama adalah seperti berikut:

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;

}

batalkan u5_send_bait(u8 byte)

{

SBUF3_TX = bait;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

batalkan u5_send_bait(u8 *bait,u16 len)

{

u16 i;

untuk(i=0;i

{

SBUF3_TX = bait;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

batal get_input(u8 * val,u8 len)

{

u8 i;

untuk(i=0;i

{

jika(val==0xff)

{

val = 0x00;

val[i+1] = 0x00;

kembali;

}

}

}

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

{

u8 res=0;

rx_sta=0;

jika(ack&&masa tunggu&&cmd)

{

sementara (--masa menunggu)

{

sys_delay_ms(10);

jika(rx_sta&0X8000)

{

jika(esp8266_check_respond(ack))

pecah;

}

}

if(waittime==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

kembalikan semula;

}

typedef struct{

u8 cmd;

e-mel u8[20];

nama u8[20];

tajuk u8[20];

u8 msg[60];

}EMAIL_INFO;

EMAIL_INFO email_info;

u8 bertindak balas[80];

u8 wifi_name[30];

u8 wifi_passwd[30];

pelayan u8[30];

port u8[30];

nama pengguna u8[30];

u8 auth_code[30];

u8 rx_sta;

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

jika(btn_val)

{

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

jika(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(nama_wifi,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,nama pengguna,15);

sys_read_vp(0x3260,auth_code,15);

get_input(server,30);

get_input(port,30);

get_input(nama pengguna,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)

{

jika(btn_val2==1)

sys_write_vp(0x3060,"Ini adalah e-mel daripada 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,"beranimerah\0\0",30);

old_val = btn_val2;

}


Masa siaran: 31-Okt-2023