ปัญหานี้เพื่อให้คุณผลักดันกรณีโอเพ่นซอร์สที่ได้รับรางวัล Diwen Developer Forum ที่ใช้งานได้จริง - ผู้ส่งเมล smtp ที่ใช้ T5L วิศวกรใช้หน้าจออัจฉริยะ T5L ผ่านโมดูล WiFi เพื่อเข้าถึงเซิร์ฟเวอร์ smtp เพื่อให้บรรลุฟังก์ชั่นการส่งอีเมล สำหรับผู้ดูแลระบบ คุณสามารถป้อนการทำงานของหน้าจอเพื่อป้อนที่อยู่อีเมลของผู้รับ ชื่ออีเมล เนื้อหาอีเมล และข้อมูลอื่นๆ บนหน้าจอได้ เป็นที่น่าสังเกตว่าเนื้อหาอีเมลยังรองรับข้อความธรรมดา การควบคุมการกำหนดค่า การตั้งค่าสีข้อความ และวิธีการแก้ไขอื่นๆ
1.สถาปัตยกรรมโปรแกรม
หน้าจออัจฉริยะ T5L ควบคุมโมดูล WiFi เพื่อโต้ตอบกับเซิร์ฟเวอร์ smtp ผ่านพอร์ตอนุกรม 5 เพื่อให้บรรลุฟังก์ชันการส่งอีเมล
2.การพัฒนาส่วนต่อประสาน
ซอฟต์แวร์ DGUS เสร็จสิ้นการพัฒนาฟังก์ชันการแสดงผลและการสัมผัสผ่านการซ้อนทับของเลเยอร์ ผู้ใช้เพียงแค่โหลดวัสดุรูปภาพที่เตรียมไว้ลงในซอฟต์แวร์ DGUS และตั้งค่าฟังก์ชันการแสดงผลและการสัมผัส
1.C51สออฟแวร์ดีออกแบบ
พอร์ตอนุกรมหน้าจออัจฉริยะ T5L 5 สื่อสารกับโมดูล WiFi เพื่อให้การโต้ตอบกับเซิร์ฟเวอร์ smtp เสร็จสมบูรณ์ ส่วนหนึ่งของรหัสหลักมีดังนี้:
โมฆะ uart5_init (u32 บอด)
-
SCON3T = 0x80;
SCON3R = 0x80;
บอด = (u32)((สองเท่า)(FOSC/8.0)/บอด);
BODE3_DIV_H = (บอด>>8)&0xff;
BODE3_DIV_L = บอด&0xff;
ES3R = 0;
ES3T = 0;
-
เป็นโมฆะ u5_send_byte (u8 ไบต์)
-
SBUF3_TX = ไบต์;
ในขณะที่(!(SCON3T&0x01));
SCON3T &= 0xfe;
-
เป็นโมฆะ u5_send_bytes (u8 * ไบต์, u16 len)
-
U16 และ;
สำหรับ(i=0;i
-
SBUF3_TX = ไบต์;
ในขณะที่(!(SCON3T&0x01));
SCON3T &= 0xfe;
-
-
เป็นโมฆะ get_input (u8 * val, u8 len)
-
คุณ8 ฉัน;
สำหรับ(i=0;i
-
ถ้า(val==0xff)
-
วาล = 0x00;
วาล[i+1] = 0x00;
กลับ;
-
-
-
u8 esp8266_send_cmd (u8 * cmd, u8 * ack, เวลารอ u16, u8 clearBuffer)
-
u8 ความละเอียด=0;
rx_stay=0;
ถ้า(ack&&รอเวลา&&cmd)
-
ในขณะที่ (--รอ)
-
sys_delay_ms(10);
ถ้า(rx_sta&0X8000)
-
ถ้า (esp8266_check_respond (แอ๊ค))
หยุดพัก;
-
-
ถ้า (รอเวลา==0)res=1;
ถ้า(clearBuffer==1)rx_sta=0;
-
ส่งคืนความละเอียด;
-
โครงสร้าง 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 auth_code[30];
u8 rx_stay;
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,ขนาดของ(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,พอร์ต,15);
sys_read_vp(0x3240,ชื่อผู้ใช้,15);
sys_read_vp(0x3260,รหัสรับรองความถูกต้อง,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