[Oopbron] Multifunksionele weegtoestel

——Van DWIN-ontwikkelaarsforum

In hierdie uitgawe stoot ons die bekroonde oopbron-saak van DWIN Developer Forum - Multi-function Weigher. Die ingenieur neem 'n 4-duim COF-slimskerm aan, en deur die data-interaksie tussen T5L OS-kern en HX711-module en 5 kg-druksensorstel, kan gebruikers maklik die telskermfunksies soos gewig, eenheidsprys, totale prys, tarra, ens. ., sowel as die funksies van tel, dop van gewigveranderingskurwes, en regstelling van weegakkuraatheid, ens., sodat dit maklik is om tussen verskillende toepassingscenario's te wissel om 'n gerieflike en doeltreffende weegervaring te geniet.

1. UI-ontwikkeling

f26af533d43728cd210e0f7af5e7acc

2.C51 Ontwerp

Deel van die verwysingskode vir die weeger om die prysfunksie te implementeer, is soos volg:

// Prysbladsy====================

#definieer VALUATION_UNIT_PRICE_ADDR 0x1010

#definieer VALUE_GRAM_ADDR 0x1000

#definieer VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valuation_decorticate = 0; // Pryse Tarra gewig

uint32_t valuation_unit_price = 0; //Eenheidsprys

// Eenheidsprys Herlaai

void page_valuation_unit_price_refresh()

{

uint8_t test_display[10] = {0};

if(waardasie_eenheid_prys

{

toets_vertoon[0] = waardasieeenheidsprys / 100 % 10 + 0x30;

test_display[1] = '.';

toets_vertoon[2] = waardasie-eenheidsprys / 10 % 10 + 0x30;

toets_vertoon[3] = waardasieeenheidsprys / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, toets_vertoon, 4);

}

anders as (waarde_eenheid_prys

{

toets_vertoon[0] = waardasie_eenheidsprys / 1000 % 10 + 0x30;

toets_vertoon[1] = waardasie-eenheidsprys / 100 % 10 + 0x30;

test_display[2] = '.';

toets_vertoon[3] = waardasie-eenheidsprys / 10 % 10 + 0x30;

toets_vertoon[4] = waardasie-eenheidsprys / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, toets_vertoon, 4);

}

anders as (waardasie_eenheid_prys

{

toets_vertoon[0] = waardasieeenheidsprys / 10 000 % 10 + 0x30;

toets_vertoon[1] = waardasieeenheidsprys / 1000 % 10 + 0x30;

toets_vertoon[2] = waardasie-eenheidsprys / 100 % 10 + 0x30;

test_display[3] = '.';

toets_vertoon[4] = waardasieeenheidsprys / 10 % 10 + 0x30;

toets_vertoon[5] = waardasie_eenheidsprys / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, toets_vertoon, 4);

}

anders as (waarde_eenheidsprys

{

toets_vertoon[0] = waardasieeenheidsprys / 100 000 % 10 + 0x30;

toets_vertoon[1] = waardasie-eenheidsprys / 10 000 % 10 + 0x30;

toets_vertoon[2] = waardasie-eenheidsprys / 1000 % 10 + 0x30;

toets_vertoon[3] = waardasieeenheidsprys / 100 % 10 + 0x30;

test_display[4] = '.';

toets_vertoon[5] = waardasieeenheidsprys / 10 % 10 + 0x30;

toets_vertoon[6] = waardasie_eenheidsprys / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, toets_vertoon, 4);

}

}

 

// Gewig Verfris

void page_valuation_weight_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if (gram_value >= waardasie_decorticate)

{

gram_display = gram_value - waardasie_decorticate;

if(gram_vertoon

{

test_display[0] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

anders as (gram_display

{

test_display[0] = gram_display / 10 % 10 + 0x30;

toets_vertoon[1] = gram_vertoon / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

anders as (gram_display

{

test_display[0] = gram_display / 100 % 10 + 0x30;

toets_vertoon[1] = gram_vertoon / 10 % 10 + 0x30;

toets_vertoon[2] = gram_vertoon / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

anders as (gram_display

{

test_display[0] = gram_display / 1000 % 10 + 0x30;

toets_vertoon[1] = gram_vertoon / 100 % 10 + 0x30;

toets_vertoon[2] = gram_vertoon / 10 % 10 + 0x30;

toets_vertoon[3] = gram_vertoon / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

anders as (gram_display

{

test_display[0] = gram_display / 10000 % 10 + 0x30;

toets_vertoon[1] = gram_vertoon / 1000 % 10 + 0x30;

toets_vertoon[2] = gram_vertoon / 100 % 10 + 0x30;

toets_vertoon[3] = gram_vertoon / 10 % 10 + 0x30;

toets_vertoon[4] = gram_vertoon / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

}

anders

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, toets_vertoon, 3);

}

}

 

// Totale Prys Verfris

void page_valuation_price_refresh()

{

uint32_t prys_waarde = 0;

uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};

if (gram_value >= waardasie_decorticate)

{

prys_waarde = (gram_waarde - waardasie_decorticate) * waardasie_eenheid_prys * 2 / 1000;

if(prys_waarde

{

toets_vertoon[0] = prys_waarde / 100 % 10 + 0x30;

test_display[1] = '.';

toets_vertoon[2] = prys_waarde / 10 % 10 + 0x30;

toets_vertoon[3] = prys_waarde / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, toets_vertoon, 4);

}

anders as (prys_waarde

{

toets_vertoon[0] = prys_waarde / 1000 % 10 + 0x30;

toets_vertoon[1] = prys_waarde / 100 % 10 + 0x30;

test_display[2] = '.';

toets_vertoon[3] = prys_waarde / 10 % 10 + 0x30;

toets_vertoon[4] = prys_waarde / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, toets_vertoon, 4);

}

anders as (prys_waarde

{

toets_vertoon[0] = prys_waarde / 10000 % 10 + 0x30;

toets_vertoon[1] = prys_waarde / 1000 % 10 + 0x30;

toets_vertoon[2] = prys_waarde / 100 % 10 + 0x30;

test_display[3] = '.';

toets_vertoon[4] = prys_waarde / 10 % 10 + 0x30;

toets_vertoon[5] = prys_waarde / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, toets_vertoon, 4);

}

anders as (prys_waarde

{

toets_vertoon[0] = prys_waarde / 100 000 % 10 + 0x30;

toets_vertoon[1] = prys_waarde / 10 000 % 10 + 0x30;

toets_vertoon[2] = prys_waarde / 1000 % 10 + 0x30;

toets_vertoon[3] = prys_waarde / 100 % 10 + 0x30;

test_display[4] = '.';

toets_vertoon[5] = prys_waarde / 10 % 10 + 0x30;

toets_vertoon[6] = prys_waarde / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, toets_vertoon, 4);

}

}

anders

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, toets_vertoon, 4);

}

}

void page_valuation_decorticate()

{

valuation_decorticate = gram_value;

page_valuation_weight_refresh();

}

void page_valuation_1()

{

if(waardasie_eenheidsprys

{

waardasieeenheidsprys = waardasieeenheidsprys * 10 + 1;

page_valuation_unit_price_refresh();

}

}

void page_valuation_2()

{

if(waardasie_eenheidsprys

{

waardasieeenheidsprys = waardasieeenheidsprys * 10 + 2;

page_valuation_unit_price_refresh();

}

}

void page_valuation_3()

{

if(waardasie_eenheidsprys

{

waardasie_eenheidsprys = waardasie_eenheidsprys * 10 + 3;

page_valuation_unit_price_refresh();

}

}

void page_valuation_4()

{

if(waardasie_eenheidsprys

{

waardasieeenheidsprys = waardasieeenheidsprys * 10 + 4;

page_valuation_unit_price_refresh();

}

}

void page_valuation_5()

{

if(waardasie_eenheidsprys

{

valuation_unit_price = valuation_unit_price * 10 + 5;

page_valuation_unit_price_refresh();

}

}

void page_valuation_6()

{

if(waardasie_eenheidsprys

{

waardasie_eenheid_prys = waardasie_eenheid_prys * 10 + 6;

page_valuation_unit_price_refresh();

}

}

void page_valuation_7()

{

if(waardasie_eenheidsprys

{

waardasie_eenheid_prys = waardasie_eenheid_prys * 10 + 7;

page_valuation_unit_price_refresh();

}

}

void page_valuation_8()

{

if(waardasie_eenheidsprys

{

waardasie_eenheid_prys = waardasie_eenheid_prys * 10 + 8;

page_valuation_unit_price_refresh();

}

}

void page_valuation_9()

{

if(waardasie_eenheidsprys

{

waardasieeenheidsprys = waardasieeenheidsprys * 10 + 9;

page_valuation_unit_price_refresh();

}

}

void page_valuation_0()

{

if(waardasie_eenheidsprys

{

waardasie_eenheid_prys = waardasie_eenheid_prys * 10 + 0;

page_valuation_unit_price_refresh();

}

}

void page_valuation_back()

{

valuation_unit_price = waardasie_eenheidsprys / 10;

page_valuation_unit_price_refresh();

}

void page_valuation_clear()

{

waardasie_eenheidsprys = 0;

page_valuation_unit_price_refresh();

}


Postyd: 28-Apr-2024