——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
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