Ова прашање за да го поттикнете многу практичен Форум за програмери на Diwen, наградуван со отворен код, - smtp испраќач на пошта базиран на T5L, инженерите го користат паметниот екран T5L, преку модулот WiFi за пристап до серверот smtp, за да ја постигнат функцијата за испраќање е-пошта на администраторот, на екранот може да се внесе работата на екранот за внесување на адресата на е-пошта на примачот, насловот на е-поштата, содржината на е-поштата и други информации. Вреди да се напомене дека содржината на е-пошта исто така поддржува обичен текст, контроли за конфигурација, поставување боја на текстот и други методи за уредување.
1.Програмска архитектура
Паметниот екран T5L го контролира модулот WiFi за да комуницира со smtp серверот преку сериската порта 5 за да ја постигне функцијата за испраќање е-пошта.
![](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f969e7ea32035860.png)
![ава (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bc1027de84836.jpg)
2. Развој на интерфејс
Софтверот DGUS го комплетира развојот на функциите за прикажување и допир преку суперпозиција на слоеви. Корисниците треба само да ги вчитаат подготвените материјали за слика во софтверот DGUS и да ги постават функциите на екранот и допирот.
![ава (2)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bc23a89741572.jpg)
1. C51СнафтверДозначете
Сериската порта 5 за паметен екран T5L комуницира со модулот WiFi за да ја заврши интеракцијата со smtp серверот. Дел од главниот код е како што следува:
void uart5_init (u32 baud)
{
SCON3T = 0x80;
SCON3R = 0x80;
бауд = (u32) ((двојно) (FOSC/8.0)/бауд);
BODE3_DIV_H = (baud>>8)&0xff;
BODE3_DIV_L = бауд&0xff;
ES3R = 0;
ES3T = 0;
}
void u5_send_byte (u8 бајти)
{
SBUF3_TX = бајт;
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
неважечки u5_send_bytes (u8 *бајти, u16 len)
{
u16 и;
за(i=0;i
{
SBUF3_TX = бајти;
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
}
неважечки get_input (u8 * val,u8 len)
{
u8 i;
за(i=0;i
{
ако (val==0xff)
{
val = 0x00;
val[i+1] = 0x00;
враќање;
}
}
}
u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 timetime,u8 clearBuffer)
{
u8 res=0;
rx_stay=0;
ако (потврди&&време на чекање&&cmd)
{
додека (--време на чекање)
{
sys_delay_ms(10);
if(rx_sta&0X8000)
{
if(esp8266_check_respond(ack))
пауза;
}
}
ако(време на чекање==0)рес=1;
if(clearBuffer==1)rx_sta=0;
}
врати рес;
}
typedef struct{
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 auth_code[30];
u8 rx_stay;
sys_read_vp(0x1000,(u8*)&btn_val,1);
if (btn_val)
{
ако (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);
}друго ако(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,port,15);
sys_read_vp (0x3240, корисничко име, 15);
sys_read_vp (0x3260,auth_code,15);
get_input (сервер,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)
{
ако (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);
old_val = btn_val2;
}
Време на објавување: Октомври-31-2023 година