तपाइँको लागि यो मुद्दा एक धेरै व्यावहारिक Diwen विकासकर्ता फोरम पुरस्कार-विजेता खुला स्रोत केस - T5L आधारित smtp मेल प्रेषक पुश गर्न को लागी, ईन्जिनियरहरूले T5L स्मार्ट स्क्रिन प्रयोग गर्दछ, WiFi मोड्युल मार्फत smtp सर्भरमा पहुँच गर्न, इमेल पठाउने कार्य प्राप्त गर्न। प्रशासकलाई, प्राप्तकर्ताको इमेल ठेगाना प्रविष्ट गर्न स्क्रिनको सञ्चालन, इमेल शीर्षक, इमेल सामग्री र अन्य जानकारी स्क्रिनमा इनपुट गर्न सकिन्छ।यो नोट गर्न लायक छ कि इमेल सामग्रीले सादा पाठ, कन्फिगरेसन नियन्त्रणहरू, पाठ रङ सेटिङ र अन्य सम्पादन विधिहरू पनि समर्थन गर्दछ।
1. कार्यक्रम वास्तुकला
T5L स्मार्ट स्क्रिनले वाइफाइ मोड्युललाई सिरियल पोर्ट 5 मार्फत smtp सर्भरसँग अन्तरक्रिया गर्न इमेल पठाउने कार्य प्राप्त गर्न नियन्त्रण गर्दछ।
2. इन्टरफेस विकास
DGUS सफ्टवेयरले तहहरूको सुपरपोजिसन मार्फत प्रदर्शन र टच प्रकार्यहरूको विकास पूरा गर्दछ।प्रयोगकर्ताहरूले केवल DGUS सफ्टवेयरमा तयार चित्र सामग्रीहरू लोड गर्न र प्रदर्शन र टच प्रकार्यहरू सेटअप गर्न आवश्यक छ।
1. C51SअफवेयरDचिन्ह
T5L स्मार्ट स्क्रिन सिरियल पोर्ट 5 ले smtp सर्भरसँग अन्तरक्रिया पूरा गर्न WiFi मोड्युलसँग सञ्चार गर्दछ।मुख्य कोडको अंश निम्नानुसार छ:
void uart5_init(u32 baud)
{
SCON3T = 0x80;
SCON3R = 0x80;
बाउड = (u32)((डबल)(FOSC/8.0)/baud);
BODE3_DIV_H = (baud>>8)&0xff;
BODE3_DIV_L = baud&0xff;
ES3R = 0;
ES3T = 0;
}
void u5_send_byte(u8 बाइट)
{
SBUF3_TX = बाइट;
जबकि(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
void u5_send_bytes(u8 *बाइट्स,u16 len)
{
u16 i;
(i=0; i) को लागी
{
SBUF3_TX = बाइट्स;
जबकि(!(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_sta=0;
यदि (ack&&waittime&&cmd)
{
जबकि (-प्रतीक्षा समय)
{
sys_delay_ms(10);
यदि(rx_sta&0X8000)
{
if(esp8266_check_respond(ack))
ब्रेक;
}
}
यदि (प्रतीक्षा समय ==0) res = 1;
if(clearBuffer==1)rx_sta=0;
}
रिटर्न रिटर्न;
}
टाइपडेफ संरचना{
u8 cmd;
u8 इमेल [२०];
u8 नाम [२०];
u8 शीर्षक [२०];
u8 msg [60];
}EMAIL_INFO;
EMAIL_INFO email_info;
u8 प्रतिक्रिया [80];
u8 wifi_name[30];
u8 wifi_passwd[30];
u8 सर्भर [३०];
u8 पोर्ट [30];
u8 प्रयोगकर्ता नाम[30];
u8 auth_code[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,port,15);
sys_read_vp(0x3240, username,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);
यदि(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