[Отворен код] Многофункционално устройство за претегляне

——От форума за разработчици на DWIN

В този брой представяме наградения случай с отворен код на форума за разработчици на DWIN - многофункционална теглилка. Инженерът използва 4-инчов COF интелигентен екран и чрез взаимодействието на данните между ядрото на T5L OS и модула HX711 и комплекта сензори за налягане от 5 кг, потребителите могат лесно да реализират функциите на дисплея за броене, като тегло, единична цена, обща цена, тара и т.н. ., както и функциите за броене, проследяване на кривите на промяна на теглото и коригиране на точността на везните и т.н., така че да е лесно да превключвате между различни сценарии на приложение, за да се насладите на удобно и ефективно изживяване при претегляне.

1. Разработка на потребителски интерфейс

f26af533d43728cd210e0f7af5e7acc

2.C51 Дизайн

Част от референтния код за везната за прилагане на функцията за ценообразуване е както следва:

// Ценова страница====================

#define VALUATION_UNIT_PRICE_ADDR 0x1010

#define VALUATION_GRAM_ADDR 0x1000

#define VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valuation_decorticate = 0; // Ценообразуване Тара тегло

uint32_t valuation_unit_price = 0; //Единична цена

// Обновяване на единичната цена

void page_valuation_unit_price_refresh()

{

uint8_t test_display[10] = {0};

if(valuation_unit_price

{

тест_дисплей [0] = оценка_единична_цена / 100 % 10 + 0x30;

test_display[1] = '.';

тест_дисплей [2] = оценка_единична_цена / 10 % 10 + 0x30;

тест_дисплей [3] = оценка_единична_цена / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(valuation_unit_price

{

тест_дисплей[0] = оценка_единична_цена / 1000 % 10 + 0x30;

тест_дисплей [1] = оценка_единична_цена / 100 % 10 + 0x30;

test_display[2] = '.';

тест_дисплей[3] = оценка_единична_цена / 10 % 10 + 0x30;

тест_дисплей [4] = оценка_единична_цена / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(valuation_unit_price

{

тест_дисплей[0] = оценка_единична_цена / 10000 % 10 + 0x30;

тест_дисплей [1] = оценка_единична_цена / 1000 % 10 + 0x30;

тест_дисплей [2] = оценка_единична_цена / 100 % 10 + 0x30;

test_display[3] = '.';

тест_дисплей [4] = оценка_единична_цена / 10 % 10 + 0x30;

тест_дисплей [5] = оценка_единична_цена / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(valuation_unit_price

{

test_display[0] = цена_за_единична_оценка / 100000 % 10 + 0x30;

тест_дисплей [1] = оценка_единична_цена / 10000 % 10 + 0x30;

тест_дисплей [2] = оценка_единична_цена / 1000 % 10 + 0x30;

тест_дисплей[3] = оценка_единична_цена / 100 % 10 + 0x30;

test_display[4] = '.';

тест_дисплей [5] = оценка_единична_цена / 10 % 10 + 0x30;

тест_дисплей [6] = оценка_единична_цена / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

}

 

// Обновяване на теглото

void page_valuation_weight_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if(gram_value >= value_decorticate)

{

грам_дисплей = грам_стойност - оценка_декортикация;

if(gram_display

{

тест_дисплей[0] = грам_дисплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

иначе ако (gram_display

{

тест_дисплей[0] = грам_дисплей / 10 % 10 + 0x30;

тест_дисплей [1] = грам_дисплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

иначе ако (gram_display

{

тест_дисплей[0] = грам_дисплей / 100 % 10 + 0x30;

тест_дисплей [1] = грам_дисплей / 10 % 10 + 0x30;

тест_дисплей [2] = грам_дисплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

иначе ако (gram_display

{

тест_дисплей[0] = грам_дисплей / 1000 % 10 + 0x30;

тест_дисплей [1] = грам_дисплей / 100 % 10 + 0x30;

тест_дисплей [2] = грам_дисплей / 10 % 10 + 0x30;

тест_дисплей[3] = грам_дисплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

иначе ако (gram_display

{

тест_дисплей[0] = грам_дисплей / 10000 % 10 + 0x30;

тест_дисплей [1] = грам_дисплей / 1000 % 10 + 0x30;

тест_дисплей [2] = грам_дисплей / 100 % 10 + 0x30;

тест_дисплей [3] = грам_дисплей / 10 % 10 + 0x30;

тест_дисплей [4] = грам_дисплей / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

друго

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

 

// Обновяване на обща цена

void page_valuation_price_refresh()

{

uint32_t цена_стойност = 0;

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

if(gram_value >= value_decorticate)

{

цена_стойност = (грам_стойност - оценка_декортикат) * оценка_единична_цена * 2 / 1000;

if(price_value

{

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

test_display[1] = '.';

test_display[2] = price_value / 10 % 10 + 0x30;

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

иначе ако (price_value

{

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

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

test_display[2] = '.';

test_display[3] = price_value / 10 % 10 + 0x30;

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

иначе ако (price_value

{

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

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

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

test_display[3] = '.';

test_display[4] = price_value / 10 % 10 + 0x30;

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

иначе ако (price_value

{

test_display[0] = price_value / 100000 % 10 + 0x30;

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

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

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

test_display[4] = '.';

test_display[5] = price_value / 10 % 10 + 0x30;

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

друго

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

void page_valuation_decorticate()

{

valuation_decorticate = грам_стойност;

page_valuation_weight_refresh();

}

невалидна страница_оценка_1()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 1;

page_valuation_unit_price_refresh();

}

}

невалидна страница_оценка_2()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 2;

page_valuation_unit_price_refresh();

}

}

невалидна страница_оценка_3()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 3;

page_valuation_unit_price_refresh();

}

}

void page_valuation_4()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 4;

page_valuation_unit_price_refresh();

}

}

void page_valuation_5()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 5;

page_valuation_unit_price_refresh();

}

}

void page_valuation_6()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 6;

page_valuation_unit_price_refresh();

}

}

void page_valuation_7()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 7;

page_valuation_unit_price_refresh();

}

}

невалидна страница_оценка_8()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 8;

page_valuation_unit_price_refresh();

}

}

невалидна страница_оценка_9()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 9;

page_valuation_unit_price_refresh();

}

}

невалидна страница_оценка_0()

{

if(valuation_unit_price

{

оценъчна_единична_цена = оценъчна_единична_цена * 10 + 0;

page_valuation_unit_price_refresh();

}

}

void page_valuation_back()

{

единична_цена_оценка = единична_цена_оценка / 10;

page_valuation_unit_price_refresh();

}

void page_valuation_clear()

{

оценка_единична_цена = 0;

page_valuation_unit_price_refresh();

}


Време на публикуване: 28 април 2024 г