ღია კოდის T5L-ზე დაფუძნებული SMTP Mailer

ეს არის თქვენთვის პრაქტიკული Diwen Developer Forum-ის ჯილდოს მფლობელი ღია კოდის საქმე - T5L-ზე დაფუძნებული smtp ფოსტის გამგზავნი, ინჟინრები იყენებენ T5L სმარტ ეკრანს WiFi მოდულის მეშვეობით smtp სერვერზე წვდომისთვის, ელ.ფოსტის გაგზავნის ფუნქციის მისაღწევად. ადმინისტრატორს ეკრანზე შეუძლია შეიყვანოს ეკრანის მოქმედება მიმღების ელფოსტის მისამართის, ელფოსტის სათაურის, ელ.ფოსტის შინაარსის და სხვა ინფორმაციის შეყვანის მიზნით. აღსანიშნავია, რომ ელ.ფოსტის შინაარსი ასევე მხარს უჭერს უბრალო ტექსტს, კონფიგურაციის კონტროლს, ტექსტის ფერის დაყენებას და რედაქტირების სხვა მეთოდებს.

1.პროგრამული არქიტექტურა

T5L ჭკვიანი ეკრანი აკონტროლებს WiFi მოდულს smtp სერვერთან ურთიერთობისთვის სერიული პორტის 5-ის მეშვეობით, რათა მიაღწიოს ელფოსტის გაგზავნის ფუნქციას.

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 = (baud>>8)&0xff;

BODE3_DIV_L = baud&0xff;

ES3R = 0;

ES3T = 0;

}

void u5_send_byte (u8 ბაიტი)

{

SBUF3_TX = ბაიტი;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

void u5_send_bytes (u8 *bytes,u16 len)

{

u16 და;

for(i=0;i

{

SBUF3_TX = ბაიტი;

while(!(SCON3T&0x01));

SCON3T &= 0xfe;

}

}

void 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_stay=0;

if (დადასტურება&&ლოდინის დრო&&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 struct{

u8 სმდ;

u8 ელფოსტა[20];

u8 სახელი[20];

u8 სათაური[20];

u8 msg[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_stay;

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

ძველი_ვალი = btn_val2;

}


გამოქვეყნების დრო: ოქტ-31-2023