ဤပြဿနာသည် သင့်အတွက် အလွန်လက်တွေ့ကျသော Diwen Developer Forum ဆုရ open source case - T5L-based smtp mail ပေးပို့သူ၊ အင်ဂျင်နီယာများသည် T5L စမတ်စခရင်ကို အသုံးပြု၍ smtp ဆာဗာကိုဝင်ရောက်ရန်၊ အီးမေးလ်ပေးပို့ခြင်း၏လုပ်ဆောင်ချက်ကိုရရှိရန် WiFi module မှတဆင့်၊ စီမံခန့်ခွဲသူထံ၊ လက်ခံသူ၏အီးမေးလ်လိပ်စာ၊ အီးမေးလ်ခေါင်းစဉ်၊ အီးမေးလ်အကြောင်းအရာနှင့် အခြားအချက်အလက်များကို ထည့်သွင်းရန် စခရင်၏လုပ်ဆောင်ချက်ကို မျက်နှာပြင်ပေါ်တွင် ထည့်သွင်းနိုင်သည်။အီးမေးလ်အကြောင်းအရာသည် ရိုးရိုးစာသား၊ ဖွဲ့စည်းမှုထိန်းချုပ်မှုများ၊ စာသားအရောင်သတ်မှတ်ခြင်းနှင့် အခြားတည်းဖြတ်ခြင်းနည်းလမ်းများကိုလည်း ပံ့ပိုးပေးကြောင်း သတိပြုသင့်သည်။
1.Programme Architecture
T5L စမတ်စခရင်သည် အီးမေးလ်ပို့ခြင်း၏လုပ်ဆောင်ချက်ကိုအောင်မြင်ရန် smtp ဆာဗာနှင့် အပြန်အလှန်တုံ့ပြန်ရန်အတွက် serial port 5 မှ WiFi module ကို ထိန်းချုပ်သည်။
2.Interface ဖွံ့ဖြိုးတိုးတက်မှု
DGUS ဆော့ဖ်ဝဲသည် အလွှာများ၏ superposition မှတဆင့် display နှင့် touch လုပ်ဆောင်ချက်များကို ပြီးမြောက်စေသည်။အသုံးပြုသူများသည် ပြင်ဆင်ထားသော ရုပ်ပုံပစ္စည်းများကို DGUS ဆော့ဖ်ဝဲလ်တွင် တင်ကာ မျက်နှာပြင်နှင့် ထိခြင်းလုပ်ဆောင်ချက်များကို စနစ်ထည့်သွင်းရန်သာ လိုအပ်သည်။
1. C51Sဆော့ဖ်ဝဲDလက္ခဏာ
T5L စမတ်စခရင် အမှတ်စဉ် အပေါက် 5 သည် smtp ဆာဗာနှင့် အပြန်အလှန် ဆက်သွယ်မှုကို အပြီးသတ်ရန် WiFi မော်ဂျူးနှင့် ဆက်သွယ်သည်။ပင်မကုဒ်၏ အစိတ်အပိုင်းမှာ အောက်ပါအတိုင်းဖြစ်သည်။
uart5_init(u32 baud) ပျက်ပြယ်သည်
{
SCON3T = 0x80;
SCON3R = 0x80;
baud = (u32)((နှစ်ဆ)(FOSC/8.0)/baud);
BODE3_DIV_H = (baud>>8)&0xff;
BODE3_DIV_L = baud&0xff;
ES3R = 0;
ES3T = 0;
}
u5_send_byte(u8 byte) ပျက်ပြယ်သွားသည်
{
SBUF3_TX = ဘိုက်;
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
u5_send_bytes(u8 *bytes၊u16len) ပျက်ပြယ်သွားသည်
{
u16 i;
for(i=0;i
{
SBUF3_TX = ဘိုက်များ
while(!(SCON3T&0x01));
SCON3T &= 0xfe;
}
}
get_input(u8 * val၊ u8 len) ပျက်ပြယ်သည်
{
u8 i;
for(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&&waittime&&cmd)
{
အချိန်(--စောင့်ဆိုင်းချိန်)
{
sys_delay_ms(10);
အကယ်၍ (rx_sta&0X8000)
{
if(esp8266_check_respond(ack))
ချိုး;
}
}
if(waittime==0)res=1;
if(clearBuffer==1)rx_sta=0;
}
ပြန်လာ;
}
typedef struct{
u8 cmd;
u8 အီးမေးလ်[20];
u8 အမည်[20];
u8 ခေါင်းစဉ်[20];
u8 msg[60];
}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,size of(EMAIL_INFO));
if(rx_sta)
send_mail(email_info.email၊email_info.title၊email_info.msg);
}အခြား if(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);
}အခြား if(btn_val==3)
{
sys_read_vp(0x3200၊ ဆာဗာ၊ 15);
sys_read_vp(0x3220၊port၊15);
sys_read_vp(0x3240၊ အသုံးပြုသူအမည်၊ 15);
sys_read_vp(0x3260၊auth_code၊15);
get_input(ဆာဗာ၊ 30);
get_input(port၊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);
တခြား if(btn_val2==2)
sys_write_vp(0x3060," \0\0",30);
တခြား if(btn_val2==3)
sys_write_vp(0x3060"ရဲရင့်သည်။အနီေရာင်\0\0",30);
old_val = btn_val2;
}
စာတိုက်အချိန်- အောက်တိုဘာ ၃၁-၂၀၂၃