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

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

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

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

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

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_sta=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_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,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