Ачык чыганак T5L нигезендә SMTP Mailer

Бу проблема сезнең өчен бик практик Diwen Developer Forum премиясенә лаек булган ачык чыганак - T5L нигезендә smtp почта җибәрүче, инженерлар T5L акыллы экранын, WiFi модуле аша, smtp серверына керү, электрон почта җибәрү функциясенә ирешү өчен. администраторга, алучының электрон почта адресын, электрон почта исемен, электрон почта эчтәлеген һәм башка мәгълүматны кертү өчен экранның эше экранга кертелергә мөмкин.Әйтергә кирәк, электрон почта эчтәлеге гади текстны, конфигурация контролен, текст төсен көйләү һәм башка редакцияләү ысулларын хуплый.

1.Программа архитектурасы

T5L акыллы экран WiFi модулын контрольдә тота, smtp серверы белән 5-нче порт аша электрон почта җибәрү функциясенә ирешү өчен.

ава (1)

2. Интерфейс үсеше

DGUS программа тәэминаты катлам суперпозициясе аша дисплей һәм сенсор функцияләрен үстерүне тәмамлый.Кулланучыларга әзерләнгән рәсем материалларын DGUS программасына йөкләргә, дисплей һәм сенсор функцияләрен куярга кирәк.

ава (2)

1. C51Sпрограмма тәэминатыDesign

T5L акыллы экран серияле порт 5, smtp серверы белән үзара бәйләнешне тәмамлау өчен, WiFi модуле белән элемтәгә керә.Төп кодның өлеше түбәндәгечә:

буш uart5_init (u32 baud)

{

SCON3T = 0x80;

SCON3R = 0x80;

baud = (u32) ((икеләтә) (FOSC / 8.0) / baud);

BODE3_DIV_H = (бауд >> 8) & 0xff;

BODE3_DIV_L = baud & 0xff;

ES3R = 0;

ES3T = 0;

}

буш u5_send_byte (u8 байт)

{

SBUF3_TX = байт;

шул вакытта (! (SCON3T & 0x01));

SCON3T & = 0xfe;

}

буш u5_send_bytes (u8 * байт, u16 лен)

{

u16 i;

өчен (i = 0; i

{

SBUF3_TX = байт;

шул вакытта (! (SCON3T & 0x01));

SCON3T & = 0xfe;

}

}

буш get_input (u8 * val, u8 len)

{

u8 i;

өчен (i = 0; i

{

if (val == 0xff)

{

val = 0x00;

val [i + 1] = 0x00;

кайту;

}

}

}

u8 esp8266_send_cmd (u8 * cmd, u8 * ack, u16 көтү вакыты, u8 clearBuffer)

{

u8 res = 0;

rx_sta = 0;

if (ack && көтү вакыты && cmd)

{

шул вакытта (- көтү вакыты)

{

sys_delay_ms (10);

if (rx_sta & 0X8000)

{

if (esp8266_check_respond (ack))

тәнәфес;

}

}

if (көтү вакыты == 0) res = 1;

if (clearBuffer == 1) rx_sta = 0;

}

кире кайту;

}

typedef struktur {

u8 смд;

u8 электрон почтасы [20];

u8 исеме [20];

u8 титулы [20];

u8 мн [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_sta;

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

if (btn_val)

{

if (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, порт, 15);

sys_read_vp (0x3240, кулланучы исеме, 15);

sys_read_vp (0x3260, auth_code, 15);

get_input (сервер, 30);

get_input (порт, 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)

{

if (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 октябрь