[Open Source] Strumento di misurazione multiquantità per cemento

——Dal forum degli sviluppatori DWIN

Il pluripremiato caso open source consigliato dal forum DWIN può essere utilizzato nel settore edile per rilevare il contenuto dei componenti del cemento: uno strumento di misurazione multiquantità del cemento basato sullo schermo intelligente T5L.Gli ingegneri utilizzano lo schermo intelligente T5L per controllare il modulo di rilevamento elettronico del peso, il modulo di misurazione della temperatura, il modulo di riscaldamento, il sensore di umidità e il modulo di miscelazione per realizzare la funzione di rilevamento della soluzione solida e del contenuto dei componenti di cemento liquido e supportare la visualizzazione in tempo reale della velocità, impostazione della temperatura, registrazione della cronologia, impostazione dei parametri della fase e altre funzioni.

1. Struttura del programma

acdsb (1)

2.Visualizzazione del materiale dell'interfaccia utente

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

3.Esempio di sviluppo dell'interfaccia utente

acdsb (6)

Progettazione del software 4.C51

Il programma di comando di inizializzazione affinché il tecnico possa comunicare con la scheda di controllo utilizzando la porta seriale 2 del T5L è il seguente:

void app_init()

{

sta_testando = 0;

test_run_time = 0;

is_sec = 0;

periodo1 = 0;

è_periodo1 = 0;

uart2_init(115200);

send_bytes("AT+INIT=0\r\n",sizeof("AT+INIT=0\r\n")-1);

sys_delay_ms(2500);

immagine_sistema(1);

send_bytes("AT+START\r\n",sizeof("AT+START\r\n")-1);

}

Il programma principale dello schermo intelligente T5L che interagisce con la scheda di controllo per realizzare la funzione di rilevamento della composizione del cemento è il seguente:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(sta_testando&&è_sec)

{

is_sec = 0;

prova_esecuzione_time++;

btn_val = sprintf(commbuff,"%02u:%02u",(u16)(test_run_time/60),(u16)(test_run_time%60));

combuff[btn_val+1] = 0;

sys_write_vp(TEST_TIME_VP,commbuff,5);

if(uart2rxsta&UART2_PACKET_OK)

{

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

{

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

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

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

}altrimenti se(uart2buf[0]==0x02&&uart2buf[1]==0x05)

{

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

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

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

}altrimenti se(uart2buf[0]==0x03&&uart2buf[1]==0x07)

{

velocità_val = *(float*)(uart2buf+2);

disp_val += (velocità_val*2.45f);

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

}altrimenti se(uart2buf[0]==0x04)

{

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

}altrimenti se(uart2buf[0]==0x05)

{

is_en_tmp = uart2buf[2];

}

uart2rxsta = 0;

}

}

se(è_periodo1)

{

è_periodo1 = 0;

t_campione();

if(sta_testando&&is_en_tmp)

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

}

se(is_btn_scan==0)

ritorno;

is_btn_scan = 0;

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

se(btn_val==0)

ritorno;

se(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Fare riferimento al codice sorgente per ulteriori informazioni.


Orario di pubblicazione: 02-dic-2023