[Отворени извор] Мултифункционални уређај за вагање

——Са ДВИН форума за програмере

У овом издању представљамо награђивани случај отвореног кода ДВИН Девелопер Форум - Мулти-фунцтион Веигхер. Инжењер је усвојио ЦОФ паметни екран од 4 инча, а кроз интеракцију података између Т5Л ОС језгра и ХКС711 модула и сета сензора притиска од 5 кг, корисници могу лако да реализују функције приказа бројања као што су тежина, јединична цена, укупна цена, тара итд. ., као и функције бројања, праћења кривуља промене тежине и корекције тачности вага, итд., тако да је лако прелазити између различитих сценарија примене да бисте уживали у погодном и ефикасном искуству вагања.

1. Развој корисничког интерфејса

ф26аф533д43728цд210е0ф7аф5е7ацц

2.Ц51 Дизајн

Део референтног кода за вагу за имплементацију функције одређивања цена је следећи:

// Страница са ценама====================

#дефине ВАЛУАТИОН_УНИТ_ПРИЦЕ_АДДР 0к1010

#дефине ВАЛУАТИОН_ГРАМ_АДДР 0к1000

#дефине ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР 0к1020

уинт32_т валуатион_децортицате = 0; // Прицинг Таре Веигхт

уинт32_т валуатион_унит_прице = 0; //Цена по јединици

// Освежавање цене јединице

воид паге_валуатион_унит_прице_рефресх()

{

уинт8_т тест_дисплаи[10] = {0};

иф(цена_јединице_вредновања

{

тест_дисплаи[0] = валуатион_унит_прице / 100 % 10 + 0к30;

тест_дисплаи[1] = '.';

тест_дисплаи[2] = валуатион_унит_прице / 10 % 10 + 0к30;

тест_дисплаи[3] = валуатион_унит_прице / 1 % 10 + 0к30;

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_УНИТ_ПРИЦЕ_АДДР, тест_дисплаи, 4);

}

елсе иф(цена_јединице_вредновања

{

тест_дисплаи[0] = валуатион_унит_прице / 1000 % 10 + 0к30;

тест_дисплаи[1] = валуатион_унит_прице / 100 % 10 + 0к30;

тест_дисплаи[2] = '.';

тест_дисплаи[3] = валуатион_унит_прице / 10 % 10 + 0к30;

тест_дисплаи[4] = валуатион_унит_прице / 1 % 10 + 0к30;

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_УНИТ_ПРИЦЕ_АДДР, тест_дисплаи, 4);

}

елсе иф(цена_јединице_вредновања

{

тест_дисплаи[0] = валуатион_унит_прице / 10000 % 10 + 0к30;

тест_дисплаи[1] = валуатион_унит_прице / 1000 % 10 + 0к30;

тест_дисплаи[2] = валуатион_унит_прице / 100 % 10 + 0к30;

тест_дисплаи[3] = '.';

тест_дисплаи[4] = валуатион_унит_прице / 10 % 10 + 0к30;

тест_дисплаи[5] = валуатион_унит_прице / 1 % 10 + 0к30;

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_УНИТ_ПРИЦЕ_АДДР, тест_дисплаи, 4);

}

елсе иф(цена_јединице вредности

{

тест_дисплаи[0] = валуатион_унит_прице / 100000 % 10 + 0к30;

тест_дисплаи[1] = валуатион_унит_прице / 10000 % 10 + 0к30;

тест_дисплаи[2] = валуатион_унит_прице / 1000 % 10 + 0к30;

тест_дисплаи[3] = валуатион_унит_прице / 100 % 10 + 0к30;

тест_дисплаи[4] = '.';

тест_дисплаи[5] = валуатион_унит_прице / 10 % 10 + 0к30;

тест_дисплаи[6] = валуатион_унит_прице / 1 % 10 + 0к30;

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_УНИТ_ПРИЦЕ_АДДР, тест_дисплаи, 4);

}

}

 

// Освежавање тежине

воид паге_валуатион_веигхт_рефресх()

{

уинт8_т тест_дисплаи[10] = {0к30};

уинт32_т грам_дисплаи = 0;

иф(грам_валуе >= валуатион_децортицате)

{

грам_дисплаи = грам_валуе - валуатион_децортицате;

иф(грам_дисплаи

{

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

елсе иф(грам_дисплаи

{

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

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

елсе иф(грам_дисплаи

{

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

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

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

елсе иф(грам_дисплаи

{

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

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

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

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

елсе иф(грам_дисплаи

{

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

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

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

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

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

}

друго

{

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ГРАМ_АДДР, тест_дисплаи, 3);

}

}

 

// Освежавање укупне цене

воид паге_валуатион_прице_рефресх()

{

уинт32_т прице_валуе = 0;

уинт8_т тест_дисплаи[10] = {0к30, '.', 0к30, 0к30};

иф(грам_валуе >= валуатион_децортицате)

{

цена_валуе = (грам_валуе - валуатион_децортицате) * валуатион_унит_прице * 2 / 1000;

иф(цена_валуе

{

тест_дисплаи[0] = цена_вредност / 100 % 10 + 0к30;

тест_дисплаи[1] = '.';

тест_дисплаи[2] = цена_вредност / 10 % 10 + 0к30;

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР, тест_дисплаи, 4);

}

елсе иф(прице_валуе

{

тест_дисплаи[0] = цена_вредност / 1000 % 10 + 0к30;

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

тест_дисплаи[2] = '.';

тест_дисплаи[3] = цена_вредност / 10 % 10 + 0к30;

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР, тест_дисплаи, 4);

}

елсе иф(прице_валуе

{

тест_дисплаи[0] = цена_вредност / 10000 % 10 + 0к30;

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

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

тест_дисплаи[3] = '.';

тест_дисплаи[4] = цена_вредност / 10 % 10 + 0к30;

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР, тест_дисплаи, 4);

}

елсе иф(прице_валуе

{

тест_дисплаи[0] = цена_вредност / 100000 % 10 + 0к30;

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

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

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

тест_дисплаи[4] = '.';

тест_дисплаи[5] = цена_вредност / 10 % 10 + 0к30;

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

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР, тест_дисплаи, 4);

}

}

друго

{

дгус_схов_тект_валуе_сет(ВАЛУАТИОН_ТОТАЛ_ПРИЦЕС_АДДР, тест_дисплаи, 4);

}

}

воид паге_валуатион_децортицате()

{

валуатион_децортицате = грам_валуе;

паге_валуатион_веигхт_рефресх();

}

воид паге_валуатион_1()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 1;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_2()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 2;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_3()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 3;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_4()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 4;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_5()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 5;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_6()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 6;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_7()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 7;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_8()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 8;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_9()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 9;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_0()

{

иф(цена_јединице_вредновања

{

валуатион_унит_прице = валуатион_унит_прице * 10 + 0;

паге_валуатион_унит_прице_рефресх();

}

}

воид паге_валуатион_бацк()

{

валуатион_унит_прице = валуатион_унит_прице / 10;

паге_валуатион_унит_прице_рефресх();

}

воид паге_валуатион_цлеар()

{

валуатион_унит_прице = 0;

паге_валуатион_унит_прице_рефресх();

}


Време поста: 28. април 2024