[Open Source] Instrumento sa Pagsukat ng Maramihang Halaga ng Semento

——Mula sa DWIN Developer Forum

Ang award-winning na open source case na inirerekomenda ng DWIN forum ay maaaring gamitin sa industriya ng konstruksiyon para makita ang nilalaman ng bahagi ng semento - isang instrumento sa pagsukat ng maraming halaga ng semento batay sa T5L smart screen.Ginagamit ng mga inhinyero ang T5L smart screen para kontrolin ang electronic weight detection module, temperature measurement module, heating module, moisture sensor, at mixing module para mapagtanto ang detection function ng solid solution at liquid cement component content, at suportahan ang real-time na pagpapakita ng rate, setting ng temperatura, record ng kasaysayan, setting ng parameter ng Stage at iba pang mga function.

1. Istruktura ng Programa

acdsb (1)

2.UI Material Display

acdsb (2)
acdsb (4)
acdsb (3)
acdsb (5)

3. Halimbawa ng Pagbuo ng UI

acdsb (6)

4.C51 na disenyo ng software

Ang programa ng pagsisimula ng command para sa inhinyero na makipag-ugnayan sa control board gamit ang T5L serial port 2 ay ang mga sumusunod:

void app_init()

{

is_testing = 0;

test_run_time = 0;

is_sec = 0;

period1 = 0;

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

}

Ang pangunahing programa ng T5L intelligent screen na nakikipag-ugnayan sa control board upang mapagtanto ang pag-andar ng pagtuklas ng komposisyon ng semento ay ang mga sumusunod:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(is_testing&&is_sec)

{

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

if(uart2rxsta&UART2_PACKET_OK)

{

if(uart2buf[0]==0x01&&uart2buf[1]==0x02)

{

init_weight = *(float*)(uart2buf+2);

init_weight *= (*(float*)flashdat);

sys_write_vp(0x1178, (u8*)&init_weight, 2);

}else if(uart2buf[0]==0x02&&uart2buf[1]==0x05)

{

init_ml = *(float*)(uart2buf+2);

init_ml /= (*(float*)flashdat+20);

sys_write_vp(0x1180, (u8*)&init_ml, 2);

}else if(uart2buf[0]==0x03&&uart2buf[1]==0x07)

{

speed_val = *(float*)(uart2buf+2);

disp_val += (speed_val*2.45f);

sys_write_vp(0x1180, (u8*)&disp_val, 2);

}else if(uart2buf[0]==0x04)

{

total_num = uart2buf[1]*256+uart2buf[2];

}else if(uart2buf[0]==0x05)

{

is_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

if(is_period1)

{

is_period1 = 0;

t_sample();

if(is_testing&&is_en_tmp)

sys_write_vp(0x1170,(u8*)&tmp,2);

}

if(is_btn_scan==0)

bumalik;

is_btn_scan = 0;

sys_read_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);

kung(btn_val==0)

bumalik;

kung(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

sys_write_vp(BTN_VAL_ADDR,(u8*)&btn_val,1);

}

 

Sumangguni sa source code para sa higit pa.


Oras ng post: Dis-02-2023