Resumen del uso de varias bibliotecas de UI

Resumen del uso de varias bibliotecas de UI

Después de trabajar durante tantos años, he usado algunas bibliotecas de UI. Para resumir brevemente, las bibliotecas de UI también son diversas. Según sus propios productos y escenarios de aplicación, no existe uno absolutamente adecuado, ¡cada uno tiene sus propios escenarios de aplicación!

cuarto de galón

En los últimos años, he utilizado QT para el desarrollo en algunos sistemas integrados, ¡con y sin interfaz UI! Las versiones básicas usan QT5.5, QT5.9, etc. Estas versiones tienen aplicaciones similares en aplicaciones integradas y las funciones que utilizan no son muy especiales.

actuación

En términos de rendimiento, presté atención al uso de la CPU y lo probé en Hi3536C. Usando QT Linux Framebuffer, al actualizar la interfaz de usuario, el uso de la CPU alcanzará aproximadamente el 10% ~ 20%, ¡lo cual sigue siendo muy alto! El escenario de actualización de la misma aplicación nueva usa LVGL, ¡y LVGL solo ocupa alrededor del 3%! Esto debería estar relacionado con la forma en que se implementa en el fb de Linux de QT. Al observar la implementación, ¡QT actualiza toda la pantalla de contenido de manera muy violenta!
Esto depende del soporte del fabricante del chip, si el fabricante del chip lo ha optimizado a través de algún medio, como la aceleración de hardware.

Memoria

En comparación con otras UI, el uso de memoria será mucho mayor, pero cuando se usa QT directamente, ¡parece que la memoria integrada es suficiente! ¡El espacio ocupado por la biblioteca también es relativamente alto! Puede que no sea adecuado para algunos productos en los que el flash es muy reducido, como solo 8 MB o 16 MB de espacio.

Experiencia de desarrollo

Este tipo de solución de "grupo familiar" es muy conveniente para el desarrollo. El soporte de la biblioteca C++ de QT también es muy completo y conveniente. Amigos que han desarrollado C y C++ durante varios años, si están desarrollando ese tipo de escenarios con una gran cantidad de datos. Negocios, si ha utilizado JAVA, C #, python, js y otros desarrolladores, sentirá que un trabajo está en el cielo y el otro debajo del piso 18.

Pero con la biblioteca QT es diferente: al operar bases de datos, archivos, JSON, XML, etc., se siente como si estuviera al alcance de su mano y ¡es muy eficiente! Los estilos y métodos básicos de uso de varias API de biblioteca también son los mismos. Incluso si recluta a una nueva persona, puede comenzar rápidamente. Este "grupo familiar" es consistente en varios escenarios. Después de desarrollar un producto, es básicamente posible desarrollar otros productos ¡El 90% del código es ctrl+C, ctrl+v! ¡La gestión de la memoria también proporciona un gran apoyo!

En los últimos años, ha estado acostumbrado a desarrollar algunos sistemas de gestión de estacionamiento (anteriormente en PC) y productos de reconocimiento facial (tipo tableta), ¡que son muy convenientes en términos de desarrollo y mantenimiento! Estos se utilizan en escenarios con interacción de base de datos (MYSQL, SQLITE), gran memoria (512 MB, 1 GB) y gran espacio Flash (nand, EMMC). Si el producto se utiliza en escenarios de control industrial, los métodos a considerar son diferentes. ¡Entiendo!

Cuando se utiliza QT en estos productos, también se debe considerar la cuestión de la frecuencia de actualización de la interfaz de usuario. En los productos integrados, generalmente no hay GPU. Por ejemplo, en NVR y DVR, la resolución de salida es básicamente alta. En este caso, la interfaz de usuario "La frecuencia de actualización no es demasiado alta. Recuerdo que cuando desarrollé una interfaz de usuario del sistema de administración en Hi3536C, generaba pantallas como HDMI y VGA, y algunas resoluciones estaban conectadas a pantallas de 1080P y 2K. Cuando comencé a usar Linuxfb de QT, la actualización obviamente se retrasó Al final, tomó mucho esfuerzo usar DirectUI como el dibujo subyacente de QT. Aunque QT agregó soporte para esto, se descubrieron varios problemas durante el uso y se realizaron muchas modificaciones para resolverlos.

Sin embargo, muchas de las películas integradas ARM actuales tienen GPU, muchas tienen CPU de 4 núcleos y la configuración de memoria es suficiente. El modo QT plus wayland también se actualiza muy rápidamente. ¡El RK3568 usado recientemente no tiene problemas con la actualización!

director

actuación

No he usado esta interfaz de usuario directamente para el desarrollo. La usé cuando encontré problemas de rendimiento de actualización en QT. Esta interfaz de usuario también es relativamente antigua. No hay muchas cosas actualizadas. Básicamente no hay controles de interfaz de usuario. Es un nivel muy bajo. UI Sin embargo, la eficiencia de actualización es muy alta y el método de administración de formularios también es muy especial. ¡La escalabilidad del control no es fácil de operar!

Memoria

Uso de memoria muy bajo

Experiencia de desarrollo

La versión utilizada es 1.7.x. No hay ningún producto de interfaz de usuario desarrollado directamente. Es difícil decirlo. El método de administración de formularios es bastante especial, el código no es fácil de depurar y la escalabilidad del control no es fácil de operar.

SDL

Nunca he usado este producto antes. ¡Debería ser más adecuado para desarrollar aplicaciones de juegos o como capa inferior!

Lo lamento

actuación

En términos de rendimiento, esta interfaz de usuario funciona muy bien, ¡pero no hay estadísticas!

Memoria

Hay mucho espacio para operar en términos de uso de memoria y tamaño de espacio, ¡y se puede usar en varios productos integrados!

Experiencia de desarrollo

Desde la capa inferior de la interfaz de usuario hasta los diversos controles, formularios, fuentes y aplicaciones de la biblioteca de la interfaz de usuario, puede controlarla fácilmente, lo que facilita la implementación de funciones que la biblioteca de la interfaz de usuario en sí no tiene, como el dibujo de la interfaz de usuario y ¡controles especiales!

Utilicé esto cuando estaba desarrollando un producto NVR en 2012. La versión era 3.9.x. Recuerdo que estaba en los primeros HiSilicon Hi3515 y Hi3520. Esta interfaz de usuario no era de código abierto. Todavía había muchas personas que usaban esta biblioteca de interfaz de usuario antes, pero ahora encuentro que muchas personas todavía usan esta biblioteca para crear productos. También fue la biblioteca donde aprendí por primera vez algo de tecnología de interfaz de usuario. A través de ella, aprendí sobre los principios de implementación de la interfaz de usuario, áreas, gestión de dibujos de formularios, implementación de fuentes, controles y otras técnicas.

Sin embargo, esta biblioteca no es de código abierto y existen riesgos de derechos de autor. Debido a que es una versión muy temprana, todavía es muy diferente del estilo de interfaz de usuario y los métodos de operación populares modernos. Si se usa en pantallas de control industrial y lugares donde la experiencia de operación interactiva no es alta, aún es más adecuado. Pero si se utiliza en algunos escenarios y productos electrónicos de consumo modernos con altos requisitos de interacción del usuario que se sienten relativamente desactualizados, ¡y el estilo de control tiene una sensación de win98! Si quieres lograr el estilo popular actual, ¡requerirá mucho esfuerzo!

Mini GUI

actuación

Lo compilé y lo probé hace mucho tiempo y el rendimiento parece ser promedio, ¡así que es difícil decirlo!

Memoria

Sus controles y administración de memoria deberían ser similares a UICGUI, pero el estilo del código es completamente diferente, ¡muy parecido al método MFC en Windows!

Experiencia de desarrollo

Además, ¡estoy bastante disgustado con el método MFC en Windows! ¡No lo he usado mucho, así que es difícil decirlo!

LVGL

actuación

Debería ser muy eficiente en un control que no utiliza imágenes y es sólo una clase de dibujo pura.

Memoria

Puede funcionar con un microcontrolador, ¿qué opinas?

Experiencia de desarrollo

Es un estilo muy moderno y popular. ¡Esta es tu primera impresión después de comenzar y ejecutar la interfaz de usuario! Desde el nivel bajo y los controles hasta la aplicación, todo es controlable. Se siente muy bien. Para lograr una interfaz de usuario moderna y popular, no es necesario personalizarla, por eso me gusta más este producto. Este tipo puede hacerlo en varios escenarios desde microcontroladores hasta SOC!

No es tan difícil empezar, ¡sólo lleva algo de tiempo familiarizarse con sus diversas operaciones! Sin embargo, ¡la documentación es muy rica y completa!

En términos de soporte de control, la mayoría de ellos están disponibles. El soporte de fuentes y el soporte de imágenes aún deben ser manejados por usted mismo. ¡Es posible que también deba manejar algunos aspectos básicos usted mismo, como la entrada del mouse, el tacto, etc.!

Ahora estoy intentando utilizar una interfaz NVR, DVR, dirección: https://gitee.com/jhting/pupanvr.git

Supongo que te gusta

Origin blog.csdn.net/jhting/article/details/132788657
Recomendado
Clasificación