Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



sábado, 31 de agosto de 2013

Asistencia Remota: Un ordenador a miles de kilómetros controlado por ti.

 Asistencia Remota usando la aplicación
"Escritorio Remoto de Chrome"

Estoy trabajando conjuntamente con un amigo de Argentina, en el desarrollo de un programa y hoy, por primera vez, hemos probado la asistencia remota con la aplicación del "Escritorio Remoto de Chrome".

Mis anteriores pruebas, las había sido con Vinagre (http://tuxpepino.wordpress.com/2008/02/07/vinagre-escritorio-remoto-seguro/) , pero ya sea por falta de conocimiento o no dar con la tecla adecuada, no hubo manera (no se si había que configurar algún puerto en el Moden-Adsl del otro usuario o algo parecido... el caso es que no lo conseguí).

Esta vez, ¡¡¡ todo ha funcionado a la primera !!!, y la verdad muy bien...y aunque había algo de retardo en las vistas de la pantalla,  pudimos conectarnos, trabajar visualmente con su ordenador y conseguimos resolver el problema.

Nota: Evidentemente la aplicación debe de estar instalada en los dos ordenadores y ambos deben de ester el navegador Chrome.

El usuario "cliente" al que vamos a entrar debe de ejecutar la aplicación y pulsar el botón de compartir:
Compartir y Acceder
A continuación saldrá un número:

Numero de la conexión: es aleatorio y cambia por cada conexión que hagamos

El usuario "admnistrador" , tendrá que pulsar "Acceder" y luego escribir el número.

Entonces se produce la conexión, y el usuario "administrador" ve el escritorio del usuario "cliente".

Además en el ordenador cliente sale un letrero informando de quien se esta conectando y si le damos permisos para entrar.



Espero que os sea útil.

Saludos



Enlace para instalar el complemento en Chrome:
https://chrome.google.com/webstore/detail/chrome-remote-desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp



viernes, 23 de agosto de 2013

Extraer de una ruta, el nombre del archivo, extension y la ruta (sin nombre del archivo)


Extraer de una  ruta: el nombre del archivo, la extensión y la ruta (sin nombre del archivo)

Gambas3 contienes muchas funciones relacionadas con ficheros. ( http://gambasdoc.org/help/comp/gb/filehttp://gambasdoc.org/help/cat/stream )

 Por ejemplo: 

 File.Dir: extrae la ruta
 File.ext: extrae la extension
 File.name: extrae el nombre
 File.basename: extrae el nombre sin la extensión.

He hecho este pequeño ejemplo de su uso:


Código de ejemplo:

Public Sub ButtonExtraer_Click()
LabelDirectorio.text = "Directorio: " & File.Dir(TextBoxFile.text)
LabelExtension.Text = "Extensión: " & File.ext(TextBoxFile.text)
LabelNombre.Text = "Nombre: " & File.name(TextBoxFile.text)
LabelNombreSinExtension.Text = "Nombre sin extension: " & File.basename(TextBoxFile.text)
End

Descarga del ejemplo completo:  enlace

Algunas veces nos complicamos la vida innecesariamente. Yo incluso me he creado una función para extraer los nombres. El problema del uso de funciones realizadas por uno mismo, es que es mucho más lento que si usamos las funciones que tiene incorporada el lenguaje.

Os dejo, por si teneis curiosidad, de como lo hacia yo (es un buen ejemplo de usar un bucle For...Next como cuenta átras):


Public Sub extraedesdebarra(ruta As String) As String
 
  Dim a As Integer
  Dim letra As String
  Dim cadena As String
 
  For a = Len(ruta) To 1 Step -1
    letra = Mid$(ruta, a, 1)
    If letra = "/" Then
      Return cadena
    Else
      cadena = letra & cadena
    Endif
   
  Next
 
End

Saludos

Fuente:
http://gambasdoc.org/help/comp/gb/file/name
http://gambas.8142.n7.nabble.com/How-to-get-all-string-after-last-tp42952.html

lunes, 19 de agosto de 2013

Cable Partido: Como reparar un cargador de un portatil.

Como reparar un cargador de un portátil: el cable partido

Una de las averías más frecuentes en el tema de los cargadores, es la rotura del cable, ya sea por mucho uso, o porque tiremos demasiado de él (mal uso :) )
Rotura del Cable del Cargador

El caso es que el mio se rompió, y pensé en buscar en internet algún manual o video para saber como repararlo.

Encontré este video de edgardo marrero , pero hay que tener en cuenta que existen varios tipos de cargadores, y hay que buscar la explicación de la reparación del que se ajuste a vuestro modelo.

 Esta es la dirección del video:




http://www.youtube.com/watch?v=j5aYbyH08ds&feature=share&list=LLgImvNl0hUyu8th9r1tpIyg




En el minuto 2.05, explica como es la conexión de cable al cargador, y un tema muy importante, la polaridad del cable,  que hay que respetar donde están soldados los cables, para que cuando los volvamos a poner los reparados los pongamos en la misma situación.

Colocando los cables, según la polaridad



Consejo:
edgardo marrero ,también da el consejo de como hacer para que no se nos rompa el cable por el mismo sitio, encintandolo:






Bueno aqui os dejo como quedo mi reparación:



En mi caso yo no desoldé los cables que se conectaban a la placa del cargador, ya que tenia suficiente longitud. Lo que hice fue pelarlos y soldarle a cada uno el cable correspondiente,  ya "saneado" (quitando la zona rota).

Saludos


Nota:
En el video tarda menos de 2 minutos en desmontarlo, ya tarde más de 10 minutos.

jueves, 15 de agosto de 2013

Mi canal de youtube ya supera los 200.000 reproduciones

Bueno, ya se que no son muchas, pero me siento muy feliz de haber conseguido tantas reproduciones de videos y tener más de 350 suscriptores, hablando de temas de programación en Gambas, gnu/linux, trucos, etc....

Para suscribiros:




Os dejo aqui uno de los primeros



Saludos


Nota:
Aprendi a poner el boton de suscripción en https://developers.google.com/youtube/youtube_subscribe_button

miércoles, 14 de agosto de 2013

Calendario Laboral: Creando un Calendario personalizable con array de controles button y frame


Calendario Laboral: 
Creando un Calendario personalizable con arrays de controles button y frame

Estoy haciendo un programa para control de asistencia de personal ( un checador de tiempo ), y pensé en usar el control DateChoose ( http://gambasdoc.org/help/comp/gb.form/datechooser?es&v3 ), pero este no era tan configurable ni personalizable  como me gustaría.

Al final me he decantado por hacer un Calendario desde "cero", usando un array de controles del tipo botones dentro de un frame. La ventaja de usar botones, en vez de usar un drawingArea, es por  lo fácil de configurar colores, letras, y que ya de por si tienen métodos incluidos para controlar los eventos que le ocurran. Además me he aprovechado la ventaja que tiene gambas de usar "grupos" de controles, tanto para los botones como de los radiobutton.

    Para hacerlo útil para otras aplicaciones, he creado un formulario "FormCalendario" que contiene todo lo necesario para poderlo usar y/o modificar para adaptarlo a otras futuras aplicaciones.

Os adjunto un ejemplo que es capaz de: guardar/abrir/crear un calendario (archivo de texto plano), donde podemos indicar Vacaciones/Dias festivos/ etc (hasta 7 incidencias, con distinto color) e incluso notas, que se muestran al pasar por encima del día. Todo ello simplemente eligiendo el radiobutton deseado, escribiendo la nota y luego haciendo click en el botón que indice el día.






Enlace de Descarga del código fuente: enlace box.net


Saludos

lunes, 12 de agosto de 2013

Gambas3: Como Crear un componente simple y usarlo en otra aplicación



Gambas3: Crear un componente simple y usarlo en otra aplicación

En este video tutorial, podeis ver como se crea un  componente simple en gambas3








Nota:
Para compartir este componente a otros usuarios, simplemente se le pasa el archivo .deb para que lo instalen. Una vez instalado, ya les aparecerá en gambas3 y lo podrán utilizar en sus aplicaciones.

Para más información: http://gambasdoc.org/help/dev/gambas?en&v3

Wiki Gambas-It: Documentación y ejemplos de Gambas en Italiano


 Wiki Gambas-It:  Documentación y ejemplos de Gambas en Italiano

Gracias al usuario   vuott del foro de gambas-es, que ha citado esta web, he descubierto esta "nueva" fuente de información sobre Gambas3:
 http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0 




 Indice (enlaces a la página web en italiano)



INDICE (traducido)

     1 Globo
     2 El Cairo
     3 Portapapeles
     4 ComboBox
     5 Componentes
         5.1 Componentes de la Comunidad Gambas-it.org
     6 DBus
     7 DialogBox
     8 DrawingArea
     9 Imagen de archivo especial
     10 fuentes
     11 Forma y ventanas
     12 Funciones
     13 Gambas con HTML y JavaScript
         13.1 Aplicaciones Específicas
     14 Gambas3 y subversión
     15 La gestión de los datos de audio y archivos de audio
     16 Gestión de datos y archivos MIDI. Medio

     17 Gestión de archivos
     18 Administración de archivos PDF
     19 Gestión de imágenes
     20 Gestión de los procesos que utilizan "Proceso"
     21 Gridview
     22 InputBox
     23 Interactuar con el teclado
     Interfaz de Línea de Comando 24
     25 Gambas de interfaz con bibliotecas externas. Saber
         25.1 Otras contribuciones sobre las bibliotecas y las funciones externas
         25.2 Recuperación y utilización de las funciones externas especiales

     26 Bibliotecas. Gambas
         26.1 Bibliotecas Comunitarias Gambas-it.org
     27 ListBox
     28 Matrices y Vectores
     29 mensajes
     30 Menu
     31 Varios
     32 ratón
     33 artículos en general
     34 Contraseña
     35 PDFWriter
     36 Puertas
     37 E-mail
     38 Gambas programas y programas externos
     39 SpinBox
     40 Cuerdas, Personajes y texto
     41 deslizante
     42 Imprimir
     43 TabStrip
     44 tableta gráfica y Gambas
     45 hora, fecha y horarios
     Terminal 46 - Consola de Gambas
     Los valores numéricos y de 47 bits
     48 vídeo
     49 web

domingo, 11 de agosto de 2013

Cálcular el dígito de control del código de barras EAN13




Cálcular el dígito de control del código de barras EAN13

He encontrado en la wikipedia (http://es.wikipedia.org/wiki/European_Article_Number) , como se calcula el digito de control de estos códigos de barras, os dejo como se haría con  Gambas3:




Public Sub calculodigitocontrol(cadena As String) As Integer
'Cálculo del dígito de control EAN
Dim iSum As Integer = 0
Dim iDigit As Integer = 0
Dim EAN As String = cadena
Dim i As Integer
For i As Integer = Len(EAN) To 1 Step -1
iDigit = Val((Mid$(EAN, i, 1)))
If (Len(EAN) - i + 1) Mod 2 <> 0 Then
iSum += iDigit * 3
Else
iSum += iDigit
End If
Next
Return (10 - (iSum Mod 10)) Mod 10
End

Nota:
La variable cadena, seria los 12 primeros dígitos, devolviendo la función el dígito nº 13, que es el de comprobación.

Código fuente del programa:  enlace de descarga box.net

viernes, 9 de agosto de 2013

últimas #recompensas !!! #Arduino #leonardo Compatible 9$ #Borderless #Electronics terminan las recompensas

Acabo de leer la nueva noticia que ha publicado en http://www.indiegogo.com/projects/9-arduino-compatible-starter-kit-anyone-can-learn-electronics?c=activity, donde Harold, el creador de la campaña, anuncia que se ha limitado las recompensas: ahora solo esta solo disponible la recompensa de 1 una placa compatible arduino leonardo (y menos de 1200 unidades, a esta hora)





El resto de recompensas se han agotado,

Al ritmo que va (aproximadamente 8 recompensas cada 10 minutos), en varias horas (2 o 3 horas), se acabaran....

Harold, explica que ha tomado esta  opción de limitar las recompesas, para poder cumplir los plazos de fabricación y entrega a los usuario. 

Os dejo aqui el mensaje completo:
Hello friends,
I've received and approved the final production panel for the PCB's. As you can see from the schedule published in the page; the production of the PCB's is one of the slowest processes. Today the PCB production will start, and then the PCB's are off to the assembly plant on August 16th. Everything is running about a week ahead of schedule. I have decided to do this to save some time, so even with the incredible results of this campaign you should still get your boards on time, or even earlier.
This is a scan of the final panel going into production. I've moved from the original panel made of 4 boards to this new panel made of 9 boards. This will increase the production speed.

I made an order for 1,700 of these panels, which correlates to 15,300 boards.
There are only about 15,000 CPUs on the market and I have secured about 8,000 of them and will secure the rest in the next few days. You may have noticed I have also set limits on the perks. This is because I do not want to go over 15,000 boards because then I would have to wait for more CPUs to become available, which in turn would cause delays. So instead of creating a delay I have decided to create these limits.
I discussed this and many more options with the category manager at indiegogo, and limiting the amount of each perk that can be sold was the best option in my opinion.
I know this might sound unfair to some, and I know many of you have asked if I will be offering this board again in the future. This campaign is just the first step of a large plan, But I will listen to any and all suggestion you guys/gals make, and try to make everyone happy.
So, I created a mailing list that anyone can subscribe to. In these emails I will update you on everything I am doing at Borderless Electronics. There is no automatic subscription to this list. The list is managed by one of the largest and most trusted mailing list companies in the world. So if you would like to get updates in the future feel free to request subscription to this list.
To do this, you can send an e-mail to: borderless_electronics_updates@getresponse.com. It is not required to add any subject or text. You will receive a confirmation request by email, to avoid spam and to protect your privacy.
When I have plans to create more boards, or I have a new Indiegogo campaign. I will immediately send an update to this list.
Thanks for your great support and understanding.
Harold


Nota:
Añado aqui una descripción del Arduino Leonardo:

Características

Arduino Leonardo es la nueva placa basada en el ATmega32u4.
Cuenta con 20 pines de entradas/salidas digitales (de los cuales 7 se pueden utilizar como salidas PWM y 12 como entradas analógicas), un oscilador de cristal de 16 MHz, una conexión micro USB, un conector de alimentación, un puerto ICSP, y un botón de reset.
Contiene todo lo necesario para empezar a usar el microcontrolador, tan solo tendremos que conectarlo a una PC con un cable USB, alimentarlo con un adaptador AC-DC o conectarle una batería para empezar.
Arduino Leonardo se distingue de todas las placas anteriores en que el ATmega32u4 incorpora comunicación USB, eliminando la necesidad de un procesador secundario, esto permite que Leonardo tome el control, por ejemplo, de nuestro teclado o mouse!! (para ello, se han preparado unas librerías), además de un puerto serie/COM virtual (CDC).
También tiene otras variaciones en cuanto al comportamiento de la placa, las cuales se detallan en la siguiente guía de iniciación.

Características:

  • Microcontrolador: ATmega32u4
  • Voltaje de funcionamiento: 5V
  • Voltaje de entrada (recomendado): 7-12V
  • Voltaje de entrada (limite): 6-20V
  • Pines E/S Digitales: 20
  • Canales PWM: 7
  • Entradas Analógicas: 12
  • Corriente máxima pines E/S: 40 mA
  • Corriente en pin 3.3V: 50 mA
  • Memoria Flash: 32 KB (ATmega32u4) de los cuales 4 KB son usadas por el bootloader
  • SRAM: 2.5 KB (ATmega32u4)
  • EEPROM: 1 KB (ATmega32u4)
  • Velocidad del reloj: 16 MHz

Alimentación:

Arduino Leonardo puede ser alimentado a través de la conexión micro USB o con una fuente de alimentación externa. La fuente de alimentación se selecciona automáticamente.
Para la alimentación externa (no USB), podemos utilizar un transformador de CA a CC o una batería. El transformador lo podemos conectar mediante un jack de 2.1mm con centro positivo a la toma de alimentación de la placa. Los cables de la batería se pueden insertar en los pines GND y Vin del bloque de alimentación.
Arduino Leonardo puede trabajar con un suministro externo de 6 a 20 voltios, sin embargo, si se suministran menos de 7V, el pin de 5V puede no llegar a los cinco voltios y la placa puede volverse inestable, y si se utiliza más de 12V, el regulador de tensión se puede sobrecalentar y llegar a dañar la placa, por lo tanto el rango recomendado es de 7 a 12 voltios.
Los pines de alimentación son los siguientes:
  • VIN. Tensión de entrada a la placa Arduino cuando utilizamos una fuente de alimentación externa (en lugar de los 5 voltios de la conexión USB o de otra fuente de alimentación regulada). Podemos suministrar la alimentación a través de este pin, o, si lo estamos alimentando por el jack, podremos acceder acceder a él a través de este pin.
  • 5V. La fuente de alimentación regulada utilizada para alimentar el microcontrolador y otros componentes en la placa. Esta puede provenir ya sea de VIN a través de un regulador integrado, o suministrada a través del puerto USB o de otra fuente de 5V regulada.
  • 3V3. Un suministro 3,3V generado por el regulador integrado con un consumo de corriente máxima es de 50 mA.
  • GND. Pines de toma de tierra.
  • IOREF. Tensión a la que los pines E/S de la placa están funcionando (es decir, VCC para la placa). 5V para Leonardo.

Memoria

El ATmega32u4 tiene 32 KB (con 4 KB utilizados para el gestor de arranque). También tiene 2,5 KB de SRAM y 1 KB de EEPROM (que pueden ser leídos y escritos con la librería EEPROM).

Entradas y Salidas

Cada uno de los 20 pines de E/S digitales se pueden utilizar como entrada o salida, usando las funciones pinMode(), digitalWrite() y digitalRead().
Trabajan a 5 voltios, cada pin puede proporcionar o recibir un máximo de 40 mA y tienen una resistencia interna de pull-up (desconectada por defecto) de 20 a 50 kOhm.
Además, algunos pines tienen unas funciones especiales:
  • Serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y transmitir (TX) datos serie TTL con la capacidad de hardware serie del ATmega32U4. Hay que tener en cuenta que en Arduino Leonardo, la clase Serial se refiere a la comunicación USB (CDC); para serie TTL en los pines 0 y 1, hay que utilizar la clase Serial1.
  • TWI: 2 (SDA) y 3 (SCL). Soportan la comunicación TWI usando la Librería Wire.
  • Interrupciones externas: 2 y 3. Estas patillas se pueden configurar para disparar una interrupción a través de un valor LOW, un flanco ascendente o descendente, o un cambio en el valor. Ver attachInterrupt() para obtener más detalles.
  • PWM: 3, 5, 6, 9, 10, 11, y 13. Proporciona una señal PWM de 8 bit con la función analogWrite().
  • SPI: en el cabezal ICSP. Estos pines soportan la comunicación SPI utilizando la librería SPI. Hay que tener en cuenta que los pines SPI no están conectado a ninguno de los pines digitales E/S como en la placa UNO. Estos sólo están disponibles en el conector ICSP.
  • LED: 13. Hay un LED smd conectado al pin digital 13. Cuando el pin esta en valor HIGH, el LED está encendido, cuando el pin está en LOW, está apagado.
  • Entradas Analógicas: A0-A5, A6 – A11 (en los pines digitales 4, 6, 8, 9, 10, y 12). Arduino Leonardo tiene 12 entradas analógicas, etiquetadas de A0 hasta A11, las cuales también pueden ser utilizadas como E/S digitales. Los pines A0-A5 están situados en el mismo lugar que en Arduino Uno; las entradas A6-A11 se corresponden con las E/S digitales de los pines 4, 6, 8, 9, 10 y 12, respectivamente. Cada entrada analógica puede proporcionar 10 bits de resolución (es decir 1024 valores diferentes). Por defecto, la medida de las entradas analógicasvan desde tierra a 5 voltios, aunque es posible cambiar el extremo superior de su rango con el pin AREF y la función analogReference().
También disponemos de un par de pines más en la placa:
  • AREF. Tensión de referencia para las entradas analógicas. Se utiliza con analogReference().
  • Reset. Si llevamos esta línea a LOW, reiniciaremos el microcontrolador. Normalmente se utiliza para añadir un botón de reinicio para shields que bloquean el botón de reset de la placa.

Comunicación

Arduino Leonardo nos ofrece una serie de facilidades para comunicarse con un ordenador, con otro Arduino o con otros microcontroladores.
El ATmega32U4 incorpora comunicación serie UART TTL (5V) disponible en los pines digitales 0 (RX) y 1 (TX).
Como novedad, el 32U4 también nos va a permitir establecer una comunicación serie a través de USB (CDC) y aparecer como un puerto COM virtual con en nuestro sistema operativo.
El chip también actúa como un dispositivo de máxima velocidad USB 2.0, utilizando los drivers estándar de COM USB. En Windows necesitaremos un archivo .inf.
El IDE de Arduino incluye un monitor de puerto serie que nos permite transmitir texto desde y hacia la placa Arduino. Los LEDs RX y TX de la placa parpadean cuando se están transmitiendo datos a través de la conexión USB al ordenador (pero no para la comunicación de serie en los pines 0 y 1).
La librería SoftwareSerial nos va a permitir establecer una comunicación de serie en cualquiera de los pines digitales de Arduino Leonardo.
El ATmega32U4 también es compatible con la comunicación I2C (TWI) y SPI. El IDE de Arduino incluye la librería Wire para simplificar el uso del bus I2C, consulta la documentación para más detalles. Para la comunicación SPI, utiliza la librería SPI.
Con Arduino Leonardo podemos emular un teclado y un ratón genérico, y puede ser programado para controlar estos dispositivos de entrada utilizando clases Keyboard y Mouse.

Programación

Arduino Leonardo se puede programar con el software de Arduino (descarga). Seleccione “Arduino Leonardo” desde Tool > Board (de acuerdo con el microcontrolador de tu placa). Para obtener más información, consulte la guía de referencia y los tutoriales.
El ATmega32U4 de Arduino Leonardo viene precargado con un bootloader que le va a permitir cargar código a la misma sin el uso de un programador de hardware externo. Se comunica mediante el protocolo AVR109.
También se puede pasar por alto el bootloader y el programa del microcontrolador a través del puerto ICSP (programación In-Circuit Serial) ver las instrucciones para más detalles.
Carga de bootloader & Reset automático por Software
En lugar de presionar el botón de reset antes de cargar un programa, Leonardo ha sido diseñado de manera que le permita ser reseteada por software que se ejecuta en el ordenador al que esté conectado.
El reset se dispara cuando abrimos el puerto serie (CDC) / COM virtual a 1200 baudios y lo cerramos. Cuando esto ocurre, el procesador se reiniciará, rompiendo la conexión USB con el ordenador (lo que significa que el puerto COM virtual desaparecerá).
Una vez reseteado el procesador, el gestor de arranque se iniciará, permaneciendo activo durante unos 8 segundos. El bootloader también se puede iniciar pulsando el botón de reset en Leonardo. Debemos tener en cuenta que cuando la conectamos por primera vez, se va ejecutar directamente, si existe, el sketch de usuario en lugar de iniciar el gestor de arranque.
Debido a la forma en que Leonardo se resetea, lo mejor es dejar que el IDE de Arduino realice el reset antes de la carga de un programa, especialmente si estamos acostumbrados a pulsar el botón de reset antes de subir en otras placas. Si el software no puede resetear la placa, siempre podremos cargar el bootloader pulsando el botón de reset de la placa.

Protección contra sobre corrientes en el USB

Arduino Leonardo tiene un polifusible reseteable que protege los puertos USB de tu ordenador de las variaciones de corriente. Aunque la mayoría de los ordenadores nos ofrecen una protección interna, el fusible nos proporciona una protección adicional. Si aplicamos más de 500 mA al puerto USB, el fusible automáticamente se corta la conexión hasta que el cortocircuito o sobrecarga se haya eliminado.

Características Físicas

La longitud máxima y la anchura de la PCB Leonardo son 2,7 y 2,1 pulgadas respectivamente, con el conector USB y el conector de alimentación aumenta la dimensión anterior. Tenemos cuatro orificios para los tornillos que nos permiten sujetar la placa a una superficie o caja. Obsérvese que la distancia entre los pines digitales 7 y 8 es de 160 milésimas de pulgada (0,16 “) y no 100 milésimas como en el resto de pines.