Гэта праблема для вас, каб падштурхнуць вельмі практычны выпадак з адкрытым зыходным кодам, які атрымаў узнагароды на форуме распрацоўшчыкаў Diwen - адпраўнік пошты smtp на базе T5L, інжынеры выкарыстоўваюць смарт-экран T5L праз модуль WiFi для доступу да сервера smtp, каб атрымаць функцыю адпраўкі электроннай пошты адміністратару, аперацыя з экрана для ўводу адраса электроннай пошты атрымальніка, загалоўка электроннай пошты, змесціва электроннай пошты і іншай інфармацыі можа быць уведзена на экране.Варта адзначыць, што змесціва электроннай пошты таксама падтрымлівае звычайны тэкст, элементы кіравання канфігурацыяй, усталяванне колеру тэксту і іншыя метады рэдагавання.
1. Архітэктура праграмы
Смарт-экран T5L кіруе модулем WiFi для ўзаемадзеяння з серверам smtp праз паслядоўны порт 5 для выканання функцыі адпраўкі электроннай пошты.
2. Распрацоўка інтэрфейсу
Праграмнае забеспячэнне DGUS завяршае распрацоўку дысплея і сэнсарных функцый праз суперпазіцыю слаёў.Карыстальнікам трэба толькі загрузіць падрыхтаваныя выявы ў праграмнае забеспячэнне DGUS і наладзіць дысплей і сэнсарныя функцыі.
1. C51Sпраграмнае забеспячэннеDэзайн
Паслядоўны порт 5 разумнага экрана T5L звязваецца з модулем WiFi для завяршэння ўзаемадзеяння з серверам smtp.Частка асноўнага кода выглядае наступным чынам:
несапраўдны uart5_init(u32 бод)
{
SCON3T = 0x80;
SCON3R = 0x80;
бод = (u32)((двайны)(FOSC/8.0)/бод);
BODE3_DIV_H = (бод>>8)&0xff;
BODE3_DIV_L = перадача&0xff;
ES3R = 0;
ES3T = 0;
}
несапраўдны u5_send_byte(u8 байт)
{
SBUF3_TX = байт;
пакуль(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
несапраўдны u5_send_bytes(u8 *байт,u16 даўжыня)
{
u16 i;
для (я=0;я
{
SBUF3_TX = байты;
пакуль(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
}
несапраўдны get_input(u8 * значэнне,u8 len)
{
u8 i;
для (я=0;я
{
калі (вал==0xff)
{
значэнне = 0x00;
значэнне [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)
{
калі (esp8266_check_respond(ack))
разбіваць;
}
}
if(час чакання==0)res=1;
калі (clearBuffer==1)rx_sta=0;
}
вярнуць рэз;
}
typedef struct{
u8 cmd;
электронная пошта u8 [20];
імя u8 [20];
u8 назва[20];
u8 паведамленне [60];
}ІНФАРМАЦЫЯ_EMAIL;
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,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));
калі (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,порт,15);
sys_read_vp(0x3240,імя карыстальніка,15);
sys_read_vp(0x3260,аўтэнтычны_код,15);
get_input(сервер,30);
get_input(порт,30);
get_input(імя карыстальніка,30);
get_input(аўтэнтычны_код,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);
old_val = btn_val2;
}
Час публікацыі: 31 кастрычніка 2023 г