——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](https://ecdn6.globalso.com/upload/p/1355/source/2024-06/665f077223d2b27894.png)
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