Бұл мәселе сіз үшін өте практикалық Diwen Developer Forum марапатына ие болған ашық бастапқы коды - T5L негізіндегі smtp пошта жіберушісі, инженерлер T5L смарт экранын пайдаланады, WiFi модулі арқылы smtp серверіне қол жеткізу, электрондық хаттарды жіберу функциясына қол жеткізу үшін. әкімшіге, алушының электрондық пошта мекенжайын, электрондық пошта атауын, электрондық пошта мазмұнын және басқа ақпаратты енгізу үшін экранның жұмысы экранға енгізілуі мүмкін. Электрондық пошта мазмұны қарапайым мәтінді, конфигурацияны басқару элементтерін, мәтін түсін орнатуды және басқа өңдеу әдістерін де қолдайтынын атап өткен жөн.
1. Programme Architecture
T5L смарт экраны электрондық поштаны жіберу функциясына қол жеткізу үшін 5 сериялық порт арқылы smtp серверімен өзара әрекеттесу үшін WiFi модулін басқарады.
![](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f969e7ea32035860.png)
![ava (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bc1027de84836.jpg)
2. Интерфейсті әзірлеу
DGUS бағдарламалық жасақтамасы қабаттардың суперпозициясы арқылы дисплей және сенсорлық функцияларды әзірлеуді аяқтайды. Пайдаланушылар тек DGUS бағдарламалық құралына дайындалған сурет материалдарын жүктеп, дисплей мен сенсорлық функцияларды орнатуы керек.
![ava (2)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bc23a89741572.jpg)
1. C51Сжиі емесDesign
T5L смарт экранының сериялық порты 5 smtp серверімен өзара әрекеттесуді аяқтау үшін WiFi модулімен байланысады. Негізгі кодтың бөлігі келесідей:
void uart5_init(u32 boud)
{
SCON3T = 0x80;
SCON3R = 0x80;
bod = (u32)((қос)(FOSC/8.0)/baud);
BODE3_DIV_H = (беру>>8)&0xff;
BODE3_DIV_L = жіберу&0xff;
ES3R = 0;
ES3T = 0;
}
жарамсыз u5_send_byte(u8 байт)
{
SBUF3_TX = байт;
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
void u5_send_bytes(u8 *байт,u16 лен)
{
u16 және;
үшін(i=0;i
{
SBUF3_TX = байт;
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
}
void 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 күту уақыты, u8 clearBuffer)
{
u8 res=0;
rx_stay=0;
егер(қабылдау&&күту уақыты&&cmd)
{
while(--күту уақыты)
{
sys_delay_ms(10);
егер(rx_sta&0X8000)
{
егер(esp8266_check_respond(ack))
үзіліс;
}
}
if(күту уақыты==0)res=1;
if(clearBuffer==1)rx_sta=0;
}
қайтару рез;
}
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_stay;
sys_read_vp(0x1000,(u8*)&btn_val,1);
егер(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,seof(EMAIL_INFO));
егер(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, сервер, 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);
алу_енгізу(авторлық_код,30);
}
btn_val = 0;
sys_write_vp(0x1000,(u8*)&btn_val,1);
}
sys_read_vp(0x2050,(u8*)&btn_val2,1);
егер(btn_val2!=eski_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 ж