——Del foro de desarrolladores de DWIN
En este número, impulsamos el galardonado caso de código abierto del DWIN Developer Forum: Pesadora multifunción. El ingeniero adopta una pantalla inteligente COF de 4 pulgadas y, a través de la interacción de datos entre el núcleo del sistema operativo T5L y el módulo HX711 y el conjunto de sensores de presión de 5 kg, los usuarios pueden realizar fácilmente las funciones de visualización de conteo, como peso, precio unitario, precio total, tara, etc. ., así como las funciones de conteo, seguimiento de curvas de cambio de peso y corrección de la precisión de la pesadora, etc., para que sea fácil cambiar entre diferentes escenarios de aplicación para disfrutar de una experiencia de pesaje conveniente y eficiente.
1. Desarrollo de la interfaz de usuario
![f26af533d43728cd210e0f7af5e7acc](https://ecdn6.globalso.com/upload/p/1355/source/2024-06/665f077223d2b27894.png)
2.C51 Diseño
Parte del código de referencia para que la pesadora implemente la función de fijación de precios es el siguiente:
// Página de precios===================
#definir VALUATION_UNIT_PRICE_ADDR 0x1010
#definir VALUATION_GRAM_ADDR 0x1000
#definir VALUATION_TOTAL_PRICES_ADDR 0x1020
uint32_t valoración_decorticate = 0; // Precio Peso Tara
uint32_t valoración_unit_price = 0; //Precio unitario
// Actualización del precio unitario
anular page_valuación_unit_price_refresh()
{
uint8_t test_display[10] = {0};
si(valoración_precio_unitario
{
test_display[0] = valoración_unit_price / 100 % 10 + 0x30;
test_display[1] = '.';
test_display[2] = valoración_precio_unit / 10 % 10 + 0x30;
test_display[3] = valoración_precio_unit / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
de lo contrario si (valoración_precio_unit
{
test_display[0] = valoración_unit_price / 1000 % 10 + 0x30;
test_display[1] = valoración_precio_unit / 100 % 10 + 0x30;
test_display[2] = '.';
test_display[3] = valoración_precio_unit / 10 % 10 + 0x30;
test_display[4] = valoración_precio_unit / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
de lo contrario si (valoración_precio_unit
{
test_display[0] = valoración_precio_unit / 10000 % 10 + 0x30;
test_display[1] = valoración_unit_price / 1000 % 10 + 0x30;
test_display[2] = valoración_unit_price / 100 % 10 + 0x30;
test_display[3] = '.';
test_display[4] = valoración_precio_unit / 10 % 10 + 0x30;
test_display[5] = valoración_precio_unit / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
de lo contrario si (valoración_precio_unit
{
test_display[0] = valoración_unit_price / 100000 % 10 + 0x30;
test_display[1] = valoración_unit_price / 10000 % 10 + 0x30;
test_display[2] = valoración_unit_price / 1000 % 10 + 0x30;
test_display[3] = valoración_precio_unit / 100 % 10 + 0x30;
test_display[4] = '.';
test_display[5] = valoración_unit_price / 10 % 10 + 0x30;
test_display[6] = valoración_precio_unit / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);
}
}
// Actualización de peso
anular page_valuación_peso_refresh()
{
uint8_t test_display[10] = {0x30};
uint32_t gram_display = 0;
if(valor_gramo >= valoración_decorticar)
{
gram_display = gram_value - valoración_decorticate;
si(gram_display
{
test_display[0] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
de lo contrario si (gram_display
{
test_display[0] = gram_display / 10 % 10 + 0x30;
test_display[1] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
de lo contrario si (gram_display
{
test_display[0] = gram_display / 100 % 10 + 0x30;
test_display[1] = gram_display / 10 % 10 + 0x30;
test_display[2] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
de lo contrario si (gram_display
{
test_display[0] = gram_display / 1000 % 10 + 0x30;
test_display[1] = gram_display / 100 % 10 + 0x30;
test_display[2] = gram_display / 10 % 10 + 0x30;
test_display[3] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
de lo contrario si (gram_display
{
test_display[0] = gram_display / 10000 % 10 + 0x30;
test_display[1] = gram_display / 1000 % 10 + 0x30;
test_display[2] = gram_display / 100 % 10 + 0x30;
test_display[3] = gram_display / 10 % 10 + 0x30;
test_display[4] = gram_display / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
}
demás
{
dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);
}
}
// Actualización del precio total
anular page_valuación_precio_refresh()
{
uint32_t precio_valor = 0;
uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};
if(valor_gramo >= valoración_decorticar)
{
valor_precio = (valor_gramo - valoración_decorticar) * precio_unidad_valoración * 2/1000;
si(valor_precio
{
pantalla_prueba[0] = valor_precio / 100 % 10 + 0x30;
test_display[1] = '.';
pantalla_prueba[2] = valor_precio / 10 % 10 + 0x30;
pantalla_prueba[3] = valor_precio / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
de lo contrario si (precio_valor
{
pantalla_prueba[0] = valor_precio / 1000 % 10 + 0x30;
pantalla_prueba[1] = valor_precio / 100 % 10 + 0x30;
test_display[2] = '.';
pantalla_prueba[3] = valor_precio / 10 % 10 + 0x30;
pantalla_prueba[4] = valor_precio / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
de lo contrario si (precio_valor
{
pantalla_prueba[0] = valor_precio / 10000 % 10 + 0x30;
pantalla_prueba[1] = valor_precio / 1000 % 10 + 0x30;
pantalla_prueba[2] = valor_precio / 100 % 10 + 0x30;
test_display[3] = '.';
pantalla_prueba[4] = valor_precio / 10 % 10 + 0x30;
pantalla_prueba[5] = valor_precio / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
de lo contrario si (precio_valor
{
pantalla_prueba[0] = valor_precio / 100000 % 10 + 0x30;
pantalla_prueba[1] = valor_precio / 10000 % 10 + 0x30;
pantalla_prueba[2] = valor_precio / 1000 % 10 + 0x30;
pantalla_prueba[3] = valor_precio / 100 % 10 + 0x30;
test_display[4] = '.';
pantalla_prueba[5] = valor_precio / 10 % 10 + 0x30;
pantalla_prueba[6] = valor_precio / 1 % 10 + 0x30;
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
demás
{
dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);
}
}
página vacía_valoración_decorticate()
{
valoración_decorticate = valor_gramo;
page_valuación_peso_refresh();
}
anular página_valoración_1()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 1;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_2()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 2;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_3()
{
if(valoración_precio_unitario
{
valoración_precio_unit = valoración_precio_unit * 10 + 3;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_4()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 4;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_5()
{
if(valoración_precio_unitario
{
valoración_precio_unit = valoración_precio_unit * 10 + 5;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_6()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 6;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_7()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 7;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_8()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 8;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_9()
{
if(valoración_precio_unitario
{
valoración_precio_unit = valoración_precio_unit * 10 + 9;
page_valuación_unit_price_refresh();
}
}
anular página_valoración_0()
{
if(valoración_precio_unitario
{
precio_unitario de valoración = precio_unitario de valoración * 10 + 0;
page_valuación_unit_price_refresh();
}
}
anular page_valuación_back()
{
valoración_precio_unit = valoración_precio_unit / 10;
page_valuación_unit_price_refresh();
}
anular page_valuación_clear()
{
valoración_precio_unit = 0;
page_valuación_unit_price_refresh();
}
Hora de publicación: 28-abr-2024