[Avoin lähde] Monitoiminen punnituslaite

——DWIN-kehittäjäfoorumista

Tässä numerossa esittelemme palkitun avoimen lähdekoodin DWIN Developer Forum - Multi-function Weigher -tapauksen. Insinööri käyttää 4 tuuman COF-älynäyttöä, ja T5L OS -ytimen ja HX711-moduulin sekä 5 kg:n paineanturisarjan välisen tiedonsiirron avulla käyttäjät voivat helposti toteuttaa laskentanäytön toiminnot, kuten painon, yksikköhinnan, kokonaishinnan, taarauksen jne. ., sekä laskentatoiminnot, painonmuutoskäyrien seuranta ja punnituksen tarkkuuden korjaus jne., jotta eri sovellusskenaarioiden välillä on helppo vaihtaa ja nauttia kätevästä ja tehokkaasta punnituskokemuksesta.

1. Käyttöliittymän kehittäminen

f26af533d43728cd210e0f7af5e7acc

2.C51 Suunnittelu

Osa punnituksen viitekoodista hinnoittelutoiminnon toteuttamiseksi on seuraava:

// Hinnoittelusivu====================

#define VALUATION_UNIT_PRICE_ADDR 0x1010

#define VALUATION_GRAM_ADDR 0x1000

#define VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valuation_decorticate = 0; // Hinnoittelu Taarapaino

uint32_t arvostusyksikköhinta = 0; //Yksikköhinta

// Yksikköhinta Päivitä

void page_valuation_unit_price_refresh()

{

uint8_t testinäyttö[10] = {0};

if(arvostuksen_yksikköhinta

{

testi_näyttö[0] = arvostusyksikköhinta / 100 % 10 + 0x30;

test_display[1] = '.';

testi_näyttö[2] = arvostusyksikköhinta / 10 % 10 + 0x30;

testi_näyttö[3] = arvostusyksikköhinta / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_UNIT_PRICE_ADDR, testinäyttö, 4);

}

else if(arvostuksen_yksikköhinta

{

testi_näyttö[0] = arvo_yksikköhinta / 1000 % 10 + 0x30;

testi_näyttö[1] = arvostusyksikön_hinta / 100 % 10 + 0x30;

test_display[2] = '.';

testinäyttö[3] = arvostusyksikköhinta / 10 % 10 + 0x30;

testinäyttö[4] = arvostusyksikköhinta / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_UNIT_PRICE_ADDR, testinäyttö, 4);

}

else if(arvostuksen_yksikköhinta

{

testi_näyttö[0] = arvostusyksikköhinta / 10000 % 10 + 0x30;

testi_näyttö[1] = arvostusyksikköhinta / 1000 % 10 + 0x30;

testinäyttö[2] = arvostusyksikköhinta / 100 % 10 + 0x30;

test_display[3] = '.';

testi_näyttö[4] = arvostusyksikköhinta / 10 % 10 + 0x30;

testinäyttö[5] = arvostusyksikköhinta / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_UNIT_PRICE_ADDR, testinäyttö, 4);

}

else if(arvostuksen_yksikköhinta

{

testi_näyttö[0] = arvostusyksikköhinta / 100000 % 10 + 0x30;

testi_näyttö[1] = arvostusyksikköhinta / 10000 % 10 + 0x30;

testi_näyttö[2] = arvostusyksikköhinta / 1000 % 10 + 0x30;

testi_näyttö[3] = arvostusyksikköhinta / 100 % 10 + 0x30;

test_display[4] = '.';

testi_näyttö[5] = arvostusyksikköhinta / 10 % 10 + 0x30;

testinäyttö[6] = arvostusyksikköhinta / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_UNIT_PRICE_ADDR, testinäyttö, 4);

}

}

 

// Painon päivitys

void page_valuation_weight_refresh()

{

uint8_t testinäyttö[10] = {0x30};

uint32_t gram_näyttö = 0;

if(gram_arvo >= arvostus_koristaa)

{

gramman_näyttö = gramman_arvo - arvostus_koristaa;

if(gram_näyttö

{

testi_näyttö[0] = gramman_näyttö / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

else if(gram_näyttö

{

testi_näyttö[0] = gramman_näyttö / 10 % 10 + 0x30;

testi_näyttö[1] = gramman_näyttö / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

else if(gram_näyttö

{

testi_näyttö[0] = gramman_näyttö / 100 % 10 + 0x30;

testi_näyttö[1] = gramman_näyttö / 10 % 10 + 0x30;

testi_näyttö[2] = gramman_näyttö / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

else if(gram_näyttö

{

testi_näyttö[0] = gramman_näyttö / 1000 % 10 + 0x30;

testi_näyttö[1] = gramman_näyttö / 100 % 10 + 0x30;

testi_näyttö[2] = gramman_näyttö / 10 % 10 + 0x30;

testi_näyttö[3] = gramman_näyttö / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

else if(gram_näyttö

{

testi_näyttö[0] = gramman_näyttö / 10000 % 10 + 0x30;

testi_näyttö[1] = gramman_näyttö / 1000 % 10 + 0x30;

testi_näyttö[2] = gramman_näyttö / 100 % 10 + 0x30;

testi_näyttö[3] = gramman_näyttö / 10 % 10 + 0x30;

testi_näyttö[4] = gramman_näyttö / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

}

muu

{

dgus_show_text_value_set(ARVO_GRAM_ADDR, testinäyttö, 3);

}

}

 

// Kokonaishinnan päivitys

void page_valuation_price_refresh()

{

uint32_t hinta_arvo = 0;

uint8_t testi_näyttö[10] = {0x30, '.', 0x30, 0x30};

if(gram_arvo >= arvostus_koristaa)

{

hinta_arvo = (grammin_arvo - arvo_koristaa) * arvo_yksikköhinta * 2 / 1000;

jos(hinta_arvo

{

testi_näyttö[0] = hinta_arvo / 100 % 10 + 0x30;

test_display[1] = '.';

testi_näyttö[2] = hinta_arvo / 10 % 10 + 0x30;

testi_näyttö[3] = hinta_arvo / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVOTUS_TOTAL_PRICES_ADDR, testinäyttö, 4);

}

else if(price_value

{

testi_näyttö[0] = hinta_arvo / 1000 % 10 + 0x30;

testi_näyttö[1] = hinta_arvo / 100 % 10 + 0x30;

test_display[2] = '.';

testi_näyttö[3] = hinta_arvo / 10 % 10 + 0x30;

testi_näyttö[4] = hinta_arvo / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVOTUS_TOTAL_PRICES_ADDR, testinäyttö, 4);

}

else if(price_value

{

testi_näyttö[0] = hinta_arvo / 10000 % 10 + 0x30;

testi_näyttö[1] = hinta_arvo / 1000 % 10 + 0x30;

testi_näyttö[2] = hinta_arvo / 100 % 10 + 0x30;

test_display[3] = '.';

testi_näyttö[4] = hinta_arvo / 10 % 10 + 0x30;

testi_näyttö[5] = hinta_arvo / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVOTUS_TOTAL_PRICES_ADDR, testinäyttö, 4);

}

else if(price_value

{

testi_näyttö[0] = hinta_arvo / 100000 % 10 + 0x30;

testi_näyttö[1] = hinta_arvo / 10000 % 10 + 0x30;

testi_näyttö[2] = hinta_arvo / 1000 % 10 + 0x30;

testi_näyttö[3] = hinta_arvo / 100 % 10 + 0x30;

test_display[4] = '.';

testi_näyttö[5] = hinta_arvo / 10 % 10 + 0x30;

testi_näyttö[6] = hinta_arvo / 1 % 10 + 0x30;

dgus_show_text_value_set(ARVOTUS_TOTAL_PRICES_ADDR, testinäyttö, 4);

}

}

muu

{

dgus_show_text_value_set(ARVOTUS_TOTAL_PRICES_ADDR, testinäyttö, 4);

}

}

void page_valuation_decorticate()

{

arvostus_koristaa = gramman_arvo;

page_valuation_weight_refresh();

}

void page_valuation_1()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 1;

page_valuation_unit_price_refresh();

}

}

void page_valuation_2()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 2;

page_valuation_unit_price_refresh();

}

}

void page_valuation_3()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 3;

page_valuation_unit_price_refresh();

}

}

void page_valuation_4()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 4;

page_valuation_unit_price_refresh();

}

}

void page_valuation_5()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 5;

page_valuation_unit_price_refresh();

}

}

void page_valuation_6()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 6;

page_valuation_unit_price_refresh();

}

}

void page_valuation_7()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 7;

page_valuation_unit_price_refresh();

}

}

void page_valuation_8()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 8;

page_valuation_unit_price_refresh();

}

}

void page_valuation_9()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 9;

page_valuation_unit_price_refresh();

}

}

void page_valuation_0()

{

if(arvostuksen_yksikköhinta

{

arvo_yksikköhinta = arvo_yksikköhinta * 10 + 0;

page_valuation_unit_price_refresh();

}

}

void page_valuation_back()

{

arvo_yksikköhinta = arvo_yksikköhinta / 10;

page_valuation_unit_price_refresh();

}

void page_valuation_clear()

{

arvo_yksikköhinta = 0;

page_valuation_unit_price_refresh();

}


Postitusaika: 28.4.2024