Нээлттэй эхийн T5L дээр суурилсан SMTP Mailer

Энэ асуудал танд маш практик Diwen Developer Forum шагналт нээлттэй эхийн кейсийг түлхэж өгөхөд зориулагдсан болно - T5L-д суурилсан smtp мэйл илгээгч, инженерүүд T5L ухаалаг дэлгэцийг ашиглан smtp серверт нэвтрэх, имэйл илгээх функцэд хүрэхийн тулд WiFi модулиар дамжуулан ашигладаг. администраторт, хүлээн авагчийн имэйл хаяг, имэйлийн гарчиг, имэйлийн агуулга болон бусад мэдээллийг оруулах дэлгэцийн ажиллагааг дэлгэцэн дээр оруулах боломжтой. Имэйлийн агуулга нь энгийн текст, тохиргооны хяналт, текстийн өнгө тохируулах болон бусад засварлах аргыг дэмждэг гэдгийг тэмдэглэх нь зүйтэй.

1. Архитектурын хөтөлбөр

T5L ухаалаг дэлгэц нь и-мэйл илгээх функцийг хэрэгжүүлэхийн тулд 5-р цуваа портоор дамжуулан smtp сервертэй харилцахын тулд WiFi модулийг удирддаг.

ava (1)

2. Интерфейсийн хөгжил

DGUS программ хангамж нь давхаргын давхар байрлалаар дамжуулан дэлгэцийн болон мэдрэгчтэй функцуудыг хөгжүүлж дуусгадаг. Хэрэглэгчид зөвхөн бэлтгэсэн зургийн материалыг DGUS программд ачаалж, дэлгэц болон мэдрэгчтэй функцуудыг тохируулахад л хангалттай.

ava (2)

1. C51Спрограм хангамжДэлчин

T5L ухаалаг дэлгэцийн цуваа порт 5 нь WiFi модультай холбогдож smtp сервертэй харьцаж дуусгана. Үндсэн кодын хэсэг нь дараах байдалтай байна.

void uart5_init(u32 baud)

{

SCON3T = 0x80;

SCON3R = 0x80;

baud = (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;

}

хүчингүй u5_send_bytes(u8 *bytes,u16 len)

{

u16 ба;

for(i=0;i

{

SBUF3_TX = байт;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

авах_оролтыг хүчингүй болгох(u8 * val,u8 len)

{

u8 i;

for(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;

if(ack&&waittime&&cmd)

{

байхад(--хүлээх цаг)

{

sys_delay_ms(10);

хэрэв(rx_sta&0X8000)

{

хэрэв(esp8266_check_respond(ack))

завсарлага;

}

}

if(хүлээлтийн цаг==0)res=1;

if(clearBuffer==1)rx_sta=0;

}

буцах res;

}

typedef бүтэц{

u8 cmd;

u8 имэйл[20];

u8 нэр[20];

u8 гарчиг[20];

u8 мессеж[60];

}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, и-мэйл_мэдээлэл. гарчиг,10);

sys_read_vp(0x3060,email_info.msg,30);

авах_оруулга(мэйл_мэдээлэл.нэр,20);

авах_оруулга(мэйл_мэдээлэл.имэйл,20);

авах_оруулга(мэйл_мэдээлэл. гарчиг,20);

авах_оруулга(email_info.msg,60);

илгээх_багц((u8*)&мэйл_мэдээлэл,хэмжээ(EMAIL_INFO));

хэрэв(rx_sta)

илгээх_мэйл(email_info.email,email_info.title,email_info.msg);

}өөрөөр байвал(btn_val==2)

{

sys_read_vp(0x3100,wifi_нэр,15);

sys_read_vp(0x3120,wifi_passwd,15);

авах_оруулга(wifi_нэр,30);

авах_оруулга(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);

авах_оруулга(сервер,30);

авах_оролт(порт,30);

get_input(хэрэглэгчийн нэр,30);

авах_оруулга(ath_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);

хуучин_валь = btn_val2;

}


Шуудангийн цаг: 2023 оны 10-р сарын 31