Programación Imperativa en web 2020

Todo lo relacionado con el software de Arduino
Responder
Juan Ramon
Mensajes: 366
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Programación Imperativa en web 2020

Mensaje por Juan Ramon » Mié Ene 29, 2020 9:53 pm

Muy buenas a todos.
Quería hacer un cambio en mi web por medio de la programación imperativa de la web.
He estado revisando el vídeo de introducción a la programación imperativa ExControl Server.
https://www.youtube.com/watch?v=yDiYlx3igvU

Y me encuentro con mi primer problema.

Mi intención es que según el valor de un circuito me presente una imagen de fondo u otra.
Concretamente el valor de circuito 2 en la central 5

Según me parece entender en el vídeo seria de esta forma

Código: Seleccionar todo

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
    <asp:Panel ID="PanelControls" runat="server" CssClass="background">

      apartado programación imperativa 
      <% 
        If CircuitValue(5, 2) > 0 Then
              <img src = "../ImgPantalla/Fachada.png" Class="stretch" alt="" />
              Else
          <img src = "../ImgPantalla/Fachada1.png" Class="stretch" alt="" />
        End If
      %>
       <div style="position: absolute ; left: 27%; top:32%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt1" Central="0" Index="0" /></div>
       <div style="position: absolute ; left: 37%; top:28%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt2" Central="0" Index="1" /></div>
       <div style="position: absolute ; left: 49%; top:32%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt3" Central="0" Index="2" /></div>   
       <div style="position: absolute ; left: 60%; top:28%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt4" Central="0" Index="3" /></div> 
       <div style="position: absolute ; left: 70%; top:32%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt5" Central="0" Index="4" /></div>
       <div style="position: absolute ; left: 68%; top:78%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt6" Central="5" Index="1" /></div>
       <div style="position: absolute ; left: 33%; top:78%;"> <uc1:CircuitoLt runat="server" id="CircuitoLt7" Central="5" Index="2" /></div>
    
    </asp:Panel>
</asp:Content>
Pero no me sale ninguna de las dos imágenes, pues el condicionado no funciona.

Situando el puntero del ratón sobre el texto CircuitValue(5, 2) me muestra un mensaje diciendo. 'CircuitValue' no esta declarado. Puede que sea inaccesible debido a su nivel de protección
La definición así, seria correcta?
Como saber los niveles de protección?
Muchas gracias.
Juan Ramón.

Peque
Mensajes: 58
Registrado: Sab Nov 02, 2019 5:27 am

Re: Programación Imperativa en web 2020

Mensaje por Peque » Jue Ene 30, 2020 5:55 pm

La programacion "Imperativa" no se recomienda usar ya por microsoft.. cualquier dia dejan de darle soprte en nuevas versiones de iis.

es mejor tocar el archivo dentro de codigo de la web... Algo parecido a ese ejemplo.

Código: Seleccionar todo

    'Configuraar a tu gusto
        'If ExControlLib.Centrales(   TU NUMERO DE CENTRAL ).Circuitos(NUMERO DE CIRCUITO).Valor > 0 Then
        'debes tener un CONTROL IMAGEN DENTRE DE TU PAGINA , EN ESTE CASO SE LLAMA ImgIcono PERO LO PUEDES CAMBIAR  
        If ExControlLib.Centrales(0).Circuitos(0).Valor > 0 Then
            ImgIcono.ImageUrl = "~/Img/bombillaon.png"
        Else
            ImgIcono.ImageUrl = "~/Img/bombillaoff.png"
        End If
Adjunto imagenes asociadas a este codigo
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.

Peque
Mensajes: 58
Registrado: Sab Nov 02, 2019 5:27 am

Re: Programación Imperativa en web 2020

Mensaje por Peque » Jue Ene 30, 2020 5:56 pm

Este otro codigo es ya mas avanzado... revisa todas las centrales en busca de un alumbrado encendido.. si hay alguno marca la imagen en verde... si no en rojo.

Código: Seleccionar todo

Dim AdoOn As Boolean = False

        For ce As Integer = 0 To ExControlLib.Centrales.Count - 1
            Dim Central As ExControlLib.ClsCentral = ExControlLib.Centrales(ce)
            For ci As Integer = 0 To Central.Circuitos.Count - 1
                Dim cir As ExControlLib.ClsCircuito = Central.Circuitos(ci)
                If cir.Tipo = ExControlLib.ClsCircuito.TiposCircuitos.Ado_Digital Then
                    If cir.Valor > 0 Then
                        AdoOn = True
                    End If
                End If
            Next
        Next

        If AdoOn Then
            ImgIcono.ImageUrl = "~/Img/bombillaon.png"
        Else
            ImgIcono.ImageUrl = "~/Img/bombillaoff.png"
        End If

Juan Ramon
Mensajes: 366
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Programación Imperativa en web 2020

Mensaje por Juan Ramon » Jue Ene 30, 2020 9:50 pm

Peque, muchas gracias por la recomendación.
Intentare hacer algo pero muy despacito.
Juan Ramón.

Peque
Mensajes: 58
Registrado: Sab Nov 02, 2019 5:27 am

Re: Programación Imperativa en web 2020

Mensaje por Peque » Vie Ene 31, 2020 9:54 am

Entiendo que esto aqui se ve un poco raro.... pero te aseguro que es mas sencillo y flexible que el metodo viejo

Si vas a tu proyecto web, tienes ejemplos.
Te recomiendo ver
Example-Circuitos.aspx

Esta en la carpeta Pant

Este puedes ver como personalizar paginas y manipular circuitos fácilmente o modificar el estado de controles desde codigo

También existen otros... para alarmas, escenas, condicionados... saber si estas conectado desde local o remoto para segun la ip poder meter camaras diseccionando con ip externa o interna.

Tambien existen ejemplos para manejar kodi... tanto en version navegador (simple) como avanzado pudiendo crear un mando a distancia total de kodi desde la api.

Pero bueno... eso ya es otra historia, si miras ese ejemplo veras que es muy facil conseguir lo que pretendes.

Juan Ramon
Mensajes: 366
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Programación Imperativa en web 2020

Mensaje por Juan Ramon » Vie Feb 21, 2020 9:19 pm

En principio he sacado un poco de tiempo y he vuelto al tema.
Me surge una duda y queria preguntaros sobre el refresco de la web.

Código: Seleccionar todo

<div style="position: absolute ; left:  72%; top:20%;"> 
             <asp:HyperLink ID="LnkLED" runat="server" ViewStateMode="Disabled" NavigateUrl="~/Pant/Salon.aspx"> 
                 <asp:Image ID="ImgLED" runat="server" ImagUrl="~/Img/bombillaoff.png" CssClass="ImgIcon"/> 
                 <asp:Timer ID="Timer2" runat="server" Interval="4000"></asp:Timer>
             </asp:HyperLink></div>
Si no le pongo este timer <asp:Timer ID="Timer2" runat="server" Interval="4000"></asp:Timer> cuando cambia de estado un circuito relacionado con este enlace , no se actualiza el icono, tengo que actualizar web o pulsar F5 para que los cambios se vean.
Esto se tendría actualizar con el propio timer de la pagina?
Esto estaría bien puesto?
Muchas gracias.
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
Juan Ramón.

Peque
Mensajes: 58
Registrado: Sab Nov 02, 2019 5:27 am

Re: Programación Imperativa en web 2020

Mensaje por Peque » Sab Feb 22, 2020 9:55 am

Esto se puede hacer de muchas maneras... esta es la mas sencilla.. se puede hacer mas rápido pero es mas complejo.

El tema es.... las partes a actualizar meterlas en un updatepanel... esto es para que se reflejen los cambios... toma esto como ejemplo.

Importante... meter mas de un timer reduce mucho el rendimiento... es mejor usar uno solo para todo.

Código: Seleccionar todo

<div style="position: absolute ; left:  72%; top:20%;"> 
            <asp:UpdatePanel ID="CustomUpdatePanel1" runat="server" UpdateMode="Always">
            <ContentTemplate>
              <asp:HyperLink ID="LnkLED" runat="server" ViewStateMode="Disabled" NavigateUrl="~/Pant/Salon.aspx"> 
                    <asp:Image ID="ImgLED" runat="server" ImagUrl="~/Img/bombillaoff.png" CssClass="ImgIcon"/> 
                </asp:HyperLink>
            </ContentTemplate>
        </asp:UpdatePanel>
        </div>
Si lo quieres mejorar un poco, ojo no es obligatorio ni mucho menos... usa el control literal... y le pasas a su propiedad text texto html (lo que seria el enlace puro con imagen.

Código: Seleccionar todo

<div style="position: absolute ; left:  72%; top:20%;"> 
            <asp:UpdatePanel ID="CustomUpdatePanel1" runat="server" UpdateMode="Always">
                <ContentTemplate>
                    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
En la parte de servidor.. le pasas al control literal codigo html puro...

Aun lo puedes mejorar mas usando la cache del servidor y usando el updatepanel en modo UpdateMode conditional... de esta manera enviamos los cambios solo cuando existan... reduciendo el trafico de red... esto es una buena tecnica.

Puedes ver ejemplo de esto ultimo en los controles de usuario.. .estan en la carpeta UserControl.

En cualquier caso... la primera opción funciona perfectamente y no necesitas mas... lo otro ya lo veo en formularios mas complejos donde personalices mucho.

Juan Ramon
Mensajes: 366
Registrado: Mar Feb 12, 2019 7:52 pm
Ubicación: Alicante

Re: Programación Imperativa en web 2020

Mensaje por Juan Ramon » Sab Feb 22, 2020 1:57 pm

Muchas gracias Peque por tus consejos y aclaraciones.
Juan Ramón.

Responder

Volver a “Software”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados