ปัญหานี้เพื่อให้คุณผลักดันกรณีโอเพ่นซอร์สที่ได้รับรางวัล Diwen Developer Forum ที่ใช้งานได้จริง - ผู้ส่งเมล smtp ที่ใช้ T5L วิศวกรใช้หน้าจออัจฉริยะ T5L ผ่านโมดูล WiFi เพื่อเข้าถึงเซิร์ฟเวอร์ smtp เพื่อให้บรรลุฟังก์ชั่นการส่งอีเมล สำหรับผู้ดูแลระบบ คุณสามารถป้อนการทำงานของหน้าจอเพื่อป้อนที่อยู่อีเมลของผู้รับ ชื่ออีเมล เนื้อหาอีเมล และข้อมูลอื่นๆ บนหน้าจอได้เป็นที่น่าสังเกตว่าเนื้อหาอีเมลยังรองรับข้อความธรรมดา การควบคุมการกำหนดค่า การตั้งค่าสีข้อความ และวิธีการแก้ไขอื่นๆ
1.สถาปัตยกรรมโปรแกรม
หน้าจออัจฉริยะ T5L ควบคุมโมดูล WiFi เพื่อโต้ตอบกับเซิร์ฟเวอร์ smtp ผ่านพอร์ตอนุกรม 5 เพื่อให้บรรลุฟังก์ชันการส่งอีเมล
2.การพัฒนาส่วนต่อประสาน
ซอฟต์แวร์ DGUS เสร็จสิ้นการพัฒนาฟังก์ชันการแสดงผลและการสัมผัสผ่านการซ้อนทับของเลเยอร์ผู้ใช้เพียงแค่โหลดวัสดุรูปภาพที่เตรียมไว้ลงในซอฟต์แวร์ DGUS และตั้งค่าฟังก์ชันการแสดงผลและการสัมผัส
1.C51Sออฟแวร์Dออกแบบ
พอร์ตอนุกรมหน้าจออัจฉริยะ 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)
{
คุณ16 ฉัน;
สำหรับ(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_sta=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_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,ขนาดของ(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