——Iz foruma razvijalcev DWIN
Nagrajeni odprtokodni primer, ki ga priporoča forum DWIN, se lahko uporablja v gradbeništvu za zaznavanje vsebnosti cementnih komponent – merilni instrument za več količin cementa, ki temelji na pametnem zaslonu T5L. Inženirji uporabljajo pametni zaslon T5L za nadzor elektronskega modula za zaznavanje teže, modula za merjenje temperature, modula za ogrevanje, senzorja vlage in modula za mešanje, da realizirajo funkcijo zaznavanja vsebnosti trdne raztopine in tekoče cementne komponente ter podpirajo prikaz stopnje v realnem času, nastavitev temperature, zapis zgodovine, nastavitev parametrov stopnje in druge funkcije.
1. Struktura programa
![acdsb (1)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb534d9587236.jpg)
2.UI Material Display
![acdsb (2)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb6b626488123.jpg)
![acdsb (4)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb84270f77694.jpg)
![acdsb (3)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bb975b6581165.jpg)
![acdsb (5)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbaf20a513069.jpg)
3. Primer razvoja uporabniškega vmesnika
![acdsb (6)](https://ecdn6.globalso.com/upload/p/1355/source/2024-03/65f96bbc7a0f429134.jpg)
4.C51 načrtovanje programske opreme
Inicializacijski ukazni program za inženirja za komunikacijo z nadzorno ploščo prek serijskih vrat T5L 2 je naslednji:
void app_init()
{
je_testiranje = 0;
test_run_time = 0;
je_sek = 0;
obdobje1 = 0;
je_obdobje1 = 0;
uart2_init(115200);
send_bytes("AT+INIT=0\r\n",sizeof("AT+INIT=0\r\n")-1);
sys_delay_ms(2500);
sys_pic(1);
send_bytes("AT+START\r\n",sizeof("AT+START\r\n")-1);
}
Glavni program inteligentnega zaslona T5L, ki sodeluje z nadzorno ploščo za uresničitev funkcije zaznavanja sestave cementa, je naslednji:
void btn_click_handler()
{
#define BTN_VAL_ADDR 0x1000
u16 btn_val;
če(je_testiranje&&je_sek)
{
je_sek = 0;
test_run_time++;
btn_val = sprintf(commbuff,"%02u:%02u",(u16)(test_run_time/60),(u16)(test_run_time%60));
commbuff[btn_val+1] = 0;
sys_write_vp(TEST_TIME_VP,commbuff,5);
če(uart2rxsta&UART2_PACKET_OK)
{
če(uart2buf[0]==0x01&&uart2buf[1]==0x02)
{
init_weight = *(float*)(uart2buf+2);
init_weight *= (*(float*)flashdat);
sys_write_vp(0x1178, (u8*)&init_weight, 2);
}drugače če(uart2buf[0]==0x02&&uart2buf[1]==0x05)
{
init_ml = *(float*)(uart2buf+2);
init_ml /= (*(float*)flashdat+20);
sys_write_vp(0x1180, (u8*)&init_ml, 2);
}drugače če(uart2buf[0]==0x03&&uart2buf[1]==0x07)
{
hitrost_val = *(float*)(uart2buf+2);
disp_val += (speed_val*2,45f);
sys_write_vp(0x1180, (u8*)&disp_val, 2);
}drugače če(uart2buf[0]==0x04)
{
total_num = uart2buf[1]*256+uart2buf[2];
}drugače če(uart2buf[0]==0x05)
{
is_en_tmp = uart2buf[2];
}
uart2rxsta = 0;
}
}
če(je_obdobje1)
{
je_obdobje1 = 0;
t_vzorec();
if(is_testing&&is_en_tmp)
sys_write_vp(0x1170,(u8*)&tmp,2);
}
če(is_btn_scan==0)
vrnitev;
is_btn_scan = 0;
sys_read_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
če(btn_val==0)
vrnitev;
če(btn_val
start_win_btn_click_handler(btn_val);
btn_val = 0;
sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);
}
Za več glejte izvorno kodo.
Čas objave: 2. december 2023