Panel Movil Luminoso De Leds


Ir a la página 1, 2  Siguiente

Objetivo: Panel Movil Luminoso De Leds
Hola buenas este es mi primer post en gambas, y aunque esto es una consulta creo que pueda ser interesante, para la comunidad de gambas por que lo que estoy intentando hacer es incrustar un panel luminoso movil de leds dentro del formulario de Gambas.

El problema es que no veo la opcion de que que se puedan cargar imagenes svg en el formulario de Gambas3 .

Yo vengo de una distribucion que es Puppy LInux y con un lenguaje de Programacion llamado Gtkdialog es posible.

Aqui dejo el enlace del video para que vean como funciona:


Link


No me deja cargar bien el enlace del video de Youtube asi que lo pongo como enlace:

https://www.youtube.com/watch?v=-B6hQdiPCaM



Y el enlace donde esta el programa es en :

https://misterelectronico.wordpress...minoso-de-leds/


Bueno el programa de instalacion esta en el paquete letrero_luminoso.pet que esta preparado para distribucion puppy, pero basicamente son 3 scripts que lo que hacen es generar la imagen SVG del panel que se refresca continuamente para hacer el efecto de ir corriendo el mensaje.

Estos 3 script hay que colocarlos dentro de /usr/bin

Los voy a subir en el proximo post.

Lo que pasa es que los otros script como panel_corriendo , hora_svg, fecha_svg y horario_trenes estan preparados para correrse mediante Gtkdialog.

No obstante tengo la solucion que es convertir las imagenes de svg a png.

Pero me parece menos elegante.... Bueno un saludo y encantado de estar en este foro

Gracias a didier18 por mostrarmelo y crear el paquete de gambas3 para Puppy.

Saludos a todos.



____________________________________________________________________________________________________________

Mi Blog.
https://misterelectronico.wordpress...os-con-arduino/

última edición por jguardon el Domingo, 24 Enero 2016, 18:24; editado 3 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Mr_Electronico escribió: [Ver mensaje]
El problema es que no veo la opcion de que que se puedan cargar imagenes svg en el formulario de Gambas3 .


La solución está en la Wiki oficial de Gambas: es decir utilizar un objeto DrawingArea .

Exemplum:
Private DrawingArea1 As DrawingArea
Private svg As SvgImage


Public Sub Form_Open()

svg = SvgImage.Load("/ruta/del/archivo.svg")

With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
.X = 100
.Y = 100
.W = svg.W
.H = svg.H
End With

End

Public Sub DrawingArea1_Draw()

svg.Paint

End



...pero, es posible tambien utilizar la manera clasica para cargar y mostrar imagenes: con la Clase Image y el objeto PictureBox.
Public Sub Form_Open()

Dim pb As PictureBox
Dim svg As Image

svg = Image.Load("/ruta/del/archivo.svg")

With pb = New PictureBox(Me)
.X = 100
.Y = 100
.W = svg.W
.H = svg.H
.Picture = svg.Picture
End With

End

última edición por vuott el Domingo, 24 Enero 2016, 17:53; editado 2 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Gracias vuott , la verdad es que soy muy nuevo en gambas y me queda mucho por aprender.

La idea es cargar la imagen y refrescarla cada determinado tiempo para que se ve el efecto del panel.

Los script se encargaran del resto.

Si lo consigo en cuanto lo tenga lo pongo aqui.

Un saludo y gracias por tu respuesta.




__________________________________________________________________________________________________________
Mi_Blog
https://misterelectronico.wordpress...os-con-arduino/

última edición por Mr_Electronico el Lunes, 25 Enero 2016, 18:45; editado 2 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Mr_Electronico escribió: [Ver mensaje]
La idea es cargar la imagen y refrescarla cada determinado tiempo ...


Hace falta el objeto " Timer ".
Además si tú usarás el objeto DrawingArea, podrás utilizar el metodo .Refresh() .
Con PictureBox es suficiente que esté cargada de nuevo la nueva imagen svg.

última edición por vuott el Domingo, 24 Enero 2016, 20:04; editado 2 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Bueno vuott he conseguido lo primero que es poner la fecha y la hora , pero no se me actualiza la hora por lo que tu dices , no consigo poner el Refresh correctamente en el timer.

Mira para que funcione este proyecto es necesario meter los script que voy a colocar dentro de /usr/bin

Estos script como decia hacen que se cree una imagen svg en el directorio temporal creado para ello.

/tmp/pane/num.svg

Esta imagen es la que se cargaria en el Drawing Area.

Bueno los script son estos.

http://www.mediafire.com/download/e86a8e6wlvvx3gw/SCRIPTs.tar.gz


Y el primer proyecto que he echo que presenta la fecha y de momento no muy bien es:

fecha

Bueno hasta aqui todo bien por que puedo presentar el panel luminoso en pantalla.

Este pequeño proyecto en Gambas3 el codigo es :

http://www.mediafire.com/download/f...ha-0.0.1.tar.gz


Si se miran los script no tienen nada de complicado, pero si alguien quiere informacion sobre ellos, con mucho gusto aqui estoy para contestarsela.

Si en las lineas de codigo de Gambas

Public Sub inicia()

Shell ("fecha_svg") '

End

sustituimos Shell("fecha_svg") por Shell("hora_svg") lo que se nos presentara en pantalla sera la hora actual.


He empezado a hacer el proyecto como tu dices para que con un Timer me refresque este Shell("hora_svg")

Por que cada vez que se le llama vuelve a crear de nuevo la imagen en

/tmp/panel/num.svg con la hora actual.

Pero de momento me da errores y no lo he conseguido...


Demasiadas emociones por hoy para mi .... quiza siga mañana...

Saludos y muchas gracias por todo... vuott






____________________________________________________________________________________________________
Mi_Blog
https://misterelectronico.wordpress...os-con-arduino/

última edición por Mr_Electronico el Lunes, 25 Enero 2016, 18:46; editado 2 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Mr_Electronico escribió: [Ver mensaje]
no consigo poner el Refresh correctamente en el timer.

Yo digo algo parecido a este ejemplo:
Private tempus As Timer
Private DrawingArea1 As DrawingArea
Private svg As SvgImage
Private i As Integer
Private Const ruta As String = "/usr/share/icons/hicolor/scalable/categories"


Public Sub Form_Open()

' Carga el primero archivo imagen svg contenido en la ruta elegida:
svg = SvgImage.Load(ruta &/ Dir(ruta, Null, gb.File)[0])

' Crea la DrawingArea:
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
.X = 100
.Y = 100
.W = svg.W
.H = svg.H
End With

' Crea el objeto Timer, ponendo tambien un delay de ms 300:
With tempus = New Timer As "Tempus"
.Delay = 300
.Start()
End With

End


Public Sub Tempus_Timer() ' Cada ms 300 se levanta este evento

Dim s As String

' Incrementa esta variable para identificar el siguiente archivo imagen .svg contenido en la ruta elegida:
Inc i

' Si el valor de la variable "i" es = a la cantidad -1 de los archivos imagen .svg contenidos en la nuestra ruta, para el Timer:
If i = Dir(ruta, Null, gb.File).Max Then tempus.Stop

' Carga el nombre del archivo imagen sgv en la variable "s":
s = Dir(ruta, Null, gb.File)[i]

' Carga el nuevo archivo imagen svg:
svg = SvgImage.Load(ruta &/ s)

' Refresca la DrawingArea:
DrawingArea1.Refresh()

End


Public Sub DrawingArea1_Draw() ' Este evento se levanta tambien cada vez la DrawingArea se refresca

' Dibuja en la DrawingArea el nuevo archivo imagen svg cargado con el metodo "SvgImage.Load()":
svg.Paint

End




Mr_Electronico escribió: [Ver mensaje]
Pero de momento me da errores y no lo he conseguido...

Que errores te da ?

última edición por vuott el Lunes, 25 Enero 2016, 16:19; editado 5 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
Bueno por fin lo conseguí, la verdad es que no pude contestar por que tengo la mala costumbre de tener que trabajar.

Bueno lo he hecho de la forma más sencilla.

hora

Como en el ejercicio anterior es necesario que dentro de /usr/bin esten copiados los script

crea_puntos
crea_svg
hora_svg

Que puese en los post anteriores

El proyecto en gambas 3 es este:

http://www.mediafire.com/download/2...ra-0.0.2.tar.gz


La hora se refresca y actualiza en el formulario cada 600 ms

Bueno lo siguiente es poner el letrero luminoso con las letras corriendo.

Gracias por todo vuott y un saludo nuevamente.

_____________________________________________________________________
Mi_blog
https://misterelectronico.wordpress...os-con-arduino/

última edición por Mr_Electronico el Lunes, 25 Enero 2016, 18:47; editado 2 veces
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
¡Hola

@mister_electronico ¿Tiene interés en transformar el procedimiento de la escritura?
Esto mejorará el tiempo de procesamiento, economizar los procesos y ser más legible para todos los lectores ...

Por ejemplo aquí está lo que podía dar:

' gambas class file
Public $Pathdef As String = User.Home & "/" & Application.Title & "/tmp/panel"
Public $bEq As Boolean


$ Pathdef es una variable pública, será en cualquier lugar accesible en el código. Se establece la ruta del temporal en la user.home / el nombre de la aplicación / "/ tmp / panel de"

Puse el comentario (con mi mala traducción en el código ).

Public Sub CreaPuntos()
Dim $char, $sL0, $sL1, $sL2$sL3$sL4$sL5 As String
Select $char
Case "A"
$sL0 = "0111111"
$sL1 = "1001000"
$sL2 = "1001000"
$sL3 = "1001000"
$sL4 = "0111111"
$sL5 = "0000000"
Case "B"
$sL0 = "1111111"
$sL1 = "1001001"
$sL2 = "1001001"
$sL3 = "1001001"
$sL4 = "0110110"
$sL5 = "0000000"
Case "C"
'etc...

End Select
End

Public Sub CreaSvg()
Dim i, num As Integer
If $Pathdef Not Exist($Pathdef) Then Mkdir $Pathdef 'Si la ruta no existe, se crea
Select $bEq 'de acuerdo con el valor de $ BEQ (2 caso posible, es una variable booleana)
Case True 'si $ EQB es cierto que llamamos Rotary procedimiento ()
Rotar()
Case False 'si es falsa $ EQB llamar al procedimiento Crea Puntos ()
CreaPuntos()
End Select
i = 1
num = 568
'etc...
End

Public Sub Rotar()
Dim cpt As Integer
'TEMPDIR=/tmp/panel ($Pathdef ya definido)

'let i=i+1 'será reemplazado por ...
'también se puede decir
Inc cpt
'también se puede decir
cpt += 1 'o cpt+=3 si el incremento es de 3
'etc...

End


Esto no es una obligación, por supuesto, sólo una pista para mejorar ...

Buen día.

Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
didier18 escribió: [Ver mensaje]
¿Tiene interés en transformar el procedimiento de la escritura?
Esto mejorará el tiempo de procesamiento, economizar los procesos y ser más legible para todos los lectores ...

Óptima y interesante sugerencia, didier18 !

Puedes tú desarrollar un po' más tu ejemplo? Un codigo breve, pero que funciones.

Gracias.

Saludos.

última edición por vuott el Martes, 26 Enero 2016, 17:47; editado 1 vez
Perfil MP  
Objetivo: Re: Panel Movil Luminoso De Leds
¡Hola

@Vuott

Gambas3 es un lenguaje interpretado.
El 'script' también es (de alguna manera) un lenguaje interpretado.

Propuse simplemente mister_electronico de 'portero' (no sé si el término está bien traducido) o transformar 'script' => procedimiento.
Por ejemplo :
if [ $variable -eq "1" ]; then rotar ; fi
no es tan remota que:
if $eq = 1 then Rotar()
incluso ahorra fi, que parece corresponder a EndIf porque si la condición es verdadera, se va directamente al procedimiento Rotar () haciendo tantos ciclo de reloj ganado (por supuesto estos son sólo unos pocos μsecondes y máquinas rápidas hoy ya no demasiado ...)
Por esta razón, le di los procedimientos de ejemplo. Ellos no son integrales y no sean un fiel reflejo de lo que el 'script'.
Y sobre todo mi conocimiento 'script' = 0 o cerca
Por eso he dicho que sólo era una propuesta que todos juntos en un solo programa ...

Buen día.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1351s (PHP: 17% SQL: 83%)
Consultas SQL: 38 - Debug off - GZIP Activado