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

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

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

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

ava (1)

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

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

ava (2)

1. C51Sпрограм хангамжDэлчин

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 i;

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_sta=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_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, и-мэйл_мэдээлэл. гарчиг,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