[Código aberto] Instrumento de medición de varias cantidades de cemento

——Do DWIN Developer Forum

O galardoado estuche de código aberto recomendado polo foro DWIN pódese usar na industria da construción para detectar o contido de compoñentes de cemento: un instrumento de medición de varias cantidades de cemento baseado na pantalla intelixente T5L.Os enxeñeiros usan a pantalla intelixente T5L para controlar o módulo electrónico de detección de peso, o módulo de medición de temperatura, o módulo de calefacción, o sensor de humidade e o módulo de mestura para realizar a función de detección da solución sólida e do contido do compoñente de cemento líquido, e apoiar a visualización en tempo real da taxa. configuración de temperatura, rexistro histórico, configuración de parámetros de escenario e outras funcións.

1. Estrutura do programa

acdsb (1)

2. Visualización de material da UI

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

3.Exemplo de desenvolvemento da IU

acdsb (6)

4.C51 deseño de software

O programa de comandos de inicialización para que o enxeñeiro se comunique coa placa de control mediante o porto serie T5L 2 é o seguinte:

void app_init()

{

é_probar = 0;

tempo_de_proba = 0;

is_sec = 0;

período 1 = 0;

é_período1 = 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);

}

O programa principal da pantalla intelixente T5L que interactúa coa placa de control para realizar a función de detección da composición de cemento é o seguinte:

void btn_click_handler()

{

#define BTN_VAL_ADDR 0x1000

u16 btn_val;

if(está_probando&&é_sec)

{

is_sec = 0;

tempo_de_execución de proba++;

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 += (val_velocidade*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;

}

}

se(é_período1)

{

é_período1 = 0;

t_mostra();

if(está_probando&&é_en_tmp)

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

}

if(is_btn_scan==0)

volver;

is_btn_scan = 0;

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

if(btn_val==0)

volver;

if(btn_val<=0x10)

start_win_btn_click_handler(btn_val);

 

btn_val = 0;

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

}

 

Consulte o código fonte para obter máis información.


Hora de publicación: Dec-02-2023