Autor Tema: Subrutina para el manejo de pantalla Nextion  (Leído 18721 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #75 en: 06 de Septiembre de 2018, 13:44:24 »
buenas.



añado objeto timer y objeto variable completo. estos son dos objetos que se utilizan en programas que vallamos a crear directamente en el editor de nextion, pero que se puede manipular su contenido o valor desde el serial

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #76 en: 06 de Septiembre de 2018, 18:29:39 »
buenas



añado objeto doble botón completo.

NOTA: este sera el ultimo objeto al que me dedicare. quedan tres objetos mas (CIRCULO, CUADRADO y CÓDIGO QR) esto lo dejo a ustedes, ya se ve como mas o menos funciona


PD para probar el doble botón se puede utilizar el EJEMPLO_11.HMI

es posible que añada un par de macros mas como el cambio de pagina y ocultar y mostrar objetos, a partir de aquí dedicare un tiempo a crear una rutina para leer la pantalla pero quiero antes ver si puedo mejorar el tiempo de conversión bcd y la multiplicación

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #77 en: 06 de Septiembre de 2018, 19:29:47 »
BUENS.


Estoy estudiando el modo de optimizar el uso del convertidor BCD. ya que usamos solo uno de 32 bit para todos los macros, cuando en algunas ocasiones solo es preciso convertir 8 o 16 bit
e modificado el que tengo en uso en este momento  para hacerlo multiuso  un convertidor bdc  de 8,16,24,32 todo en uno.
dejo el programa para valorar si la idea es buena.
en el de 32 bits roto 32 veces el numero para revisar cada bit pero en este fijo el contador de bits antes de empezar a convertir, con la cantidad de bits/rotaciones a convertir.   
Código: ASM
  1. CBLOCK
  2.                     DATO_HHH
  3.                     DATO_HH
  4.                     DATO_H
  5.                     DATO_L
  6.                     CONT_BITS
  7.                     DIGI_0_1
  8.                     DIGI_2_3
  9.                     DIGI_4_5
  10.                     DIGI_6_7
  11.                     DIGI_8_9
  12.                     TEMP_BIN_BCD
  13.                     BIN_BCD_UNI
  14.                     BIN_BCD_DEC
  15.                     BIN_BCD_CEN
  16.                     BIN_BCD_UNI_MIL
  17.                     BIN_BCD_DEC_MIL
  18.                     BIN_BCD_CEN_MIL
  19.                     BIN_BCD_UNI_MILLON
  20.                     BIN_BCD_DEC_MILLON
  21.                     BIN_BCD_CEN_MILLON
  22.                     BIN_BCD_UNI_BILLON
  23.                     ENDC
  24.                    
  25. BIN_a_BCD_32_HHH    MOVWF   DATO_HHH        ;SINTAXIS
  26.                     RETURN                  ;MOVLW  X
  27. BIN_a_BCD_32_HH     MOVWF   DATO_HH         ;CALL   BIN_a_BCD_32_HHH
  28.                     RETURN                  ;MOVLW  X
  29. BIN_a_BCD_32_H      MOVWF   DATO_H          ;CALL   BIN_a_BCD_32_HH                
  30.                     RETURN                  ;MOVLW  X
  31. BIN_a_BCD_32_L      MOVWF   DATO_L          ;CALL   BIN_a_BCD_32_H
  32.                     MOVLW   d'32'           ;MOVLW  X
  33.                     MOVWF   CONT_BITS       ;CALL   BIN_a_BCD_32_L
  34.                     GOTO    BIN_a_BCD
  35. ;-------------------------------------------------------------------------------                   
  36. BIN_a_BCD_24_HH     MOVWF   DATO_HH         ;SINTAXIS
  37.                     RETURN                  ;MOVLW  X
  38. BIN_a_BCD_24_H      MOVWF   DATO_H          ;CALL   BIN_a_BCD_24_HH        
  39.                     RETURN                  ;MOVLW  X
  40. BIN_a_BCD_24_L      MOVWF   DATO_L          ;CALL   BIN_a_BCD_24_H
  41.                     MOVLW   d'24'           ;MOVLW  X
  42.                     MOVWF   CONT_BITS       ;CALL   BIN_a_BCD_24_L
  43.                     GOTO    BIN_a_BCD              
  44. ;-------------------------------------------------------------------------------                   
  45. BIN_a_BCD_16_H      MOVWF   DATO_H         
  46.                     RETURN                  ;SINTAXIS
  47. BIN_a_BCD_16_L      MOVWF   DATO_L          ;MOVLW  X
  48.                     MOVLW   d'16'           ;CALL   BIN_a_BCD_16_H
  49.                     MOVWF   CONT_BITS       ;MOVLW  X
  50.                     GOTO    BIN_a_BCD       ;CALL   BIN_a_BCD_16_L
  51. ;-------------------------------------------------------------------------------                   
  52. BIN_a_BCD_8         MOVWF   DATO_L          ;SINTAXIS
  53.                     MOVLW   d'8'            ;MOVLW  X
  54.                     MOVWF   CONT_BITS       ;CALL   BIN_a_BCD_8
  55. ;-------------------------------------------------------------------------------                   
  56. BIN_a_BCD           BSF     STATUS,C
  57.                     ;MOVLW   d'32'             
  58.                     ;MOVWF   CONT_BITS         
  59.                     CLRF    DIGI_0_1
  60.                     CLRF    DIGI_2_3
  61.                     CLRF    DIGI_4_5
  62.                     CLRF    DIGI_6_7
  63.                     CLRF    DIGI_8_9
  64. Rota_Datos          RLF     DATO_L,F        ;ROTAMOS A LA IZQUIERDA TODO EL CONTENIDO
  65.                     RLF     DATO_H,F        ;DE DATO, EN CADA ACARREO DEL BIT "C" SE DESPLAZA
  66.                     RLF     DATO_HH,F       ;AL SIGIENTE REGISTRO
  67.                     RLF     DATO_HHH,F
  68.                     RLF     DIGI_0_1,F
  69.                     RLF     DIGI_2_3,F
  70.                     RLF     DIGI_4_5,F
  71.                     RLF     DIGI_6_7,F
  72.                     RLF     DIGI_8_9,F
  73.                     DECFSZ  CONT_BITS,F     ;DECREMENTAMOS EL CONTARO DE BITS ASTA QUE DE
  74.                     GOTO    Apuntador       ;CERO. SI ES ASI TERMINAMOS LA CONVERCION
  75.                     GOTO    Organiza_BCD
  76. Apuntador           MOVLW   DIGI_0_1        ;PONGO EN EL PUNTERO FSR EL REGISTRO  
  77.                     MOVWF   FSR             ;LO QUE OPERE SOBRE INDF SERA SOBRE LA DIRECCION
  78.                     CALL    Pregunta_Suma   ;APUNTADA EN FSR. EN ESTE CASO DIRECCION DONDE
  79.                     MOVLW   DIGI_2_3        ;ESTA EL CONTENIDO DE DATO_X_X
  80.                     MOVWF   FSR
  81.                     CALL    Pregunta_Suma
  82.                     MOVLW   DIGI_4_5
  83.                     MOVWF   FSR
  84.                     CALL    Pregunta_Suma
  85.                     MOVLW   DIGI_6_7
  86.                     MOVWF   FSR
  87.                     CALL    Pregunta_Suma
  88.                     MOVLW   DIGI_8_9
  89.                     MOVWF   FSR
  90.                     CALL    Pregunta_Suma
  91.                     GOTO    Rota_Datos
  92. Pregunta_Suma       MOVF    INDF,W
  93.                     MOVLW   d'3'
  94.                     ADDWF   INDF, w
  95.                     MOVWF   TEMP_BIN_BCD
  96.                     BTFSC   TEMP_BIN_BCD, 3
  97.                     MOVWF   INDF
  98.                     MOVLW   d'48'
  99.                     ADDWF   INDF, w
  100.                     MOVWF   TEMP_BIN_BCD
  101.                     BTFSC   TEMP_BIN_BCD, 7
  102.                     MOVWF   INDF
  103.                     RETURN
  104. Organiza_BCD        MOVF    DIGI_0_1,W
  105.                     ANDLW   d'15'
  106.                     MOVWF   BIN_BCD_UNI
  107.                     SWAPF   DIGI_0_1,W
  108.                     ANDLW   d'15'
  109.                     MOVWF   BIN_BCD_DEC
  110.                     MOVF    DIGI_2_3,W
  111.                     ANDLW   d'15'
  112.                     MOVWF   BIN_BCD_CEN
  113.                     SWAPF   DIGI_2_3,W
  114.                     ANDLW   d'15'
  115.                     MOVWF   BIN_BCD_UNI_MIL
  116.                     MOVF    DIGI_4_5,W
  117.                     ANDLW   d'15'
  118.                     MOVWF   BIN_BCD_DEC_MIL
  119.                     SWAPF   DIGI_4_5,W
  120.                     ANDLW   d'15'
  121.                     MOVWF   BIN_BCD_CEN_MIL
  122.                     MOVF    DIGI_6_7,W
  123.                     ANDLW   d'15'
  124.                     MOVWF   BIN_BCD_UNI_MILLON
  125.                     SWAPF   DIGI_6_7,W
  126.                     ANDLW   d'15'
  127.                     MOVWF   BIN_BCD_DEC_MILLON
  128.                     MOVF    DIGI_8_9,W
  129.                     ANDLW   d'15'
  130.                     MOVWF   BIN_BCD_CEN_MILLON
  131.                     SWAPF   DIGI_8_9,W
  132.                     ANDLW   d'15'
  133.                     MOVWF   BIN_BCD_UNI_BILLON
  134.                     RETURN

espero sus comentarios. saludos

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #78 en: 07 de Septiembre de 2018, 11:26:57 »
BUENAS.


bueno aquí dejo la mejora del bcd implementada. hice una par de pruebas y parece que funciona. pero no esta de mas echar un vistoso

para que se entienda mas o menos,   este conversor rota los 4 byts a la izquierda    hhh, hh, h, y l y van pasando a los registros dígito, y lo hace por orden, primero L, segundo H, tercero HH y por ultimo HHH. y a medida que que este ultimo rota, va entrando por orden en los registros dígito. que pasa si solo ponemos un dato de 8 bits (L), pues que cuando rote los 8, el dato abra pasado (H)
y nunca llegara a los dígitos, se quedara en cero.  entonces la solución es cuando quiero convertir un dato de 8 bits, lo almaceno en HHH, si es de 16 en HHH y HH, si es de 24 HHH, HH y H
y cuando es de 32 como es de esperar HHH, HH, H y L. de esta manera aseguro que cuando inicio la rotación sea cual sea el tamaño  siempre entra completo en los registros dígito
« Última modificación: 07 de Septiembre de 2018, 11:48:03 por estebanfolcher »

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #79 en: 07 de Septiembre de 2018, 19:57:25 »
BUENAS.


os dejo los macros y la subrutina con la mejora en el convertidor.  se a eliminado la criba de ceros para indicar el numero objeto. y se añadió una criba para los 10 dígitos.

así no confundimos al usuario y con la criaba de todos los dígitos también ganamos tiempo al no enviar ceros innecesarios. la rutina ocupa un pilen mas de espacio pero es mas rápida.
pero al modificar los macros ganamos espacio porque ay menos lineas


Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #80 en: 08 de Septiembre de 2018, 15:02:09 »
buenas.


os dejo una simulación de una onda senoidal. esta se puede ver con el EJEMPLO_9.HMI

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #81 en: 09 de Septiembre de 2018, 14:19:01 »
buenas



añado una función, oculta y muestra objetos. es muy útil si no quieres que un objeto se muestre asta que se lo requiera.

pd: recuerden actualizar la subrutina y los macros a medida que añado alguna cosa.

Desconectado estebanfolcher

  • PIC12
  • **
  • Mensajes: 70
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #82 en: 09 de Septiembre de 2018, 15:44:27 »
BUENAS



añado función para cambio de pagina
« Última modificación: 09 de Septiembre de 2018, 17:56:08 por estebanfolcher »

Desconectado manuel-241

  • PIC10
  • *
  • Mensajes: 2
Re:Subrutina para el manejo de pantalla Nextion
« Respuesta #83 en: 15 de Abril de 2023, 20:51:05 »
Hola, he leído el hilo y queria comentar el problema, estoy comunicando la pantalla nextion con un plc siemens s71200 a través de RS232, la parte de la recepción en el plc está hecha pero el envío no consigo que por ejemplo un numero se me muestre en un cuadro numérico en la pantalla nextion, estoy casi seguro de que es por la trama en hexadecimal que tengo que enviar que es incorrecta. El cuadro numérico tiene el ID2 y está en la página 0. Alguien puede decirme la cadena en hexadecimal que debo de enviar para probar el envío y ver como se hace?