Back on the road : Microframework SDK 4.3-R2 (Beta)

En los últimos macro-eventos de Microsoft hemos sido testigos de grandes anuncios, compromisos y cambios de orientación que la compañía promete introducir en un futuro casi  inmediato. Los primeros discursos de Satya Nadella dejaron definidas de forma clara las líneas que marcan la nueva orientación, y que dicho de paso generan buenas expectativas para un gran numero de desarrolladores deseosos de explorar nuevos horizontes.

Si recopilamos alguno de los mensajes muchas de estas iniciativas están directamente relacionadas con palabras que giran en torno al Cloud, Open Source y obviamente cualquier cosa relacionada con el IoT o el “Internet of yours things”.

Simultáneamente asistimos a una decidida apuesta por “Windows on Devices” integrando plataformas diversas entorno a “SoC’s” con Intel Atom o Quark. Sin duda una ventana enorme para los que apuestan por el internet de las cosas, como uno de los escenarios más propicios para generar potentes oportunidades de tecnología, innovación y negocio.

Muchos de los que seguimos de cerca la progresión de MicroFramework hemos estado durante meses esperando “alguna noticia” que despejara las dudas que se estaban generando sobre los planes que el equipo de MS tenía en su Roadmap. La gran explosión de IoT con WindowsOnDevices y los futuros Azure Intelligent System Services, sumados al hecho de que MicroFramework no estaba soportado en Visual Studio 2013 ponía en tela de juicio cualquier comentario sobre los planes más optimistas.

Pues bien como siempre el silencio y la calma no es más que el preludio de un gran revuelo. Hace pocas horas el equipo de NetMF anunciaba la disponibilidad en BETA del SDK-R2 de MicroFramework para Visual Studio 2013.

Es una gran noticia para la comunidad de NetMF que además viene respaldada por una renovada filosofía… de nuevo grandes cambios, grandes retos! :-)

El proyecto ha sido asignado al equipo OpenTech de Microsoft  : http://msopentech.com/

NetMF se renueva en su site : http://www.netmf.com/

Beta para el SDK-R2 de MicroFramework 4.3 : http://netmf.codeplex.com/releases/view/133285

En cuanto pueda os posteare otro corto con las características que se añadirán a este R2. Saludos, PepLluis,

Binding’s a la antigua : Remix (Enlazar textbox a la ‘column’ de una tabla)

Continuando con los remix, un antiguo pero recurrente ejemplo solicitado a menudo para enlazar datos a través de binding.
' Respondiendo a como añadir o modificar registros
' de una tabla de SQL con bindings y al viejo estilo
'
' Utilizaremos las columnas de Nombre y Teléfono 
' de la tabla ‘Shippers’
' Después de insertar un nuevo registro, usaremos el
' botón de actualizar para actualizar la BD.

Imports System.Data
Imports System.Data.SqlClient
Public Class miContenedor
'
'Constructores para tabla ‘Shippers’ 
' ...con su correspondiente BindingSource
Private MiConexion As New SqlConnection(“Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Temp\Northwind\NORTHWND.MDF” +
“;Integrated Security=True;Connect Timeout=30;User Instance=True”)
Private MiDataSet As New DataSet()
Private MiAdaptador As New SqlDataAdapter(“SELECT * FROM Shippers”, MiConexion)
Private MiEnlazador As New BindingSource
Private Sub Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
'
' Panel con los textbox para la entrada/modificación
    Dim Nombre As New TextBox
    Dim Telefono As New TextBox
    Dim marcoDatos = New FlowLayoutPanel
    marcoDatos.Dock = DockStyle.Top
    marcoDatos.Controls.AddRange(New Control() {Nombre, Telefono})
    Me.Controls.AddRange(New Control() {marcoDatos})
    '
    ' Panel conteniendo los botones de control
    Dim Avanza As New Button
    Dim Retrocede As New Button
    Dim Insertar As New Button
    Dim Actualizar As New Button
    Dim Controles As New FlowLayoutPanel
    Controles.Dock = DockStyle.Bottom
    Retrocede.Text = “<- Re”
    Avanza.Text = “Av ->”
    Insertar.Text = “Insertar”
    Actualizar.Text = “Actualizar”
    Controles.Controls.AddRange(New Control() {Retrocede, Avanza, Insertar, Actualizar})
    Me.Controls.AddRange(New Control() {Controles})
    '
    ' Asignar el eventos a las funciones
    AddHandler Retrocede.Click, AddressOf retroceder
    AddHandler Avanza.Click, AddressOf Avanzar
    AddHandler Insertar.Click, AddressOf Nuevo
    AddHandler Actualizar.Click, AddressOf Actualizacion
    '
    ' Conexión,relleno y asignacion del enlace al datos
    MiConexion.Open()
    MiAdaptador.Fill(MiDataSet)
    MiEnlazador.DataSource = MiDataSet.Tables(0)
    Dim Micommandbuilder As New SqlCommandBuilder(Me.MiAdaptador)
    '
    ' Enlace de los TextBox a sus omologos en la tabla
    Dim EnlaceNombre As New Binding(“Text”, MiEnlazador, “CompanyName”)
    Nombre.DataBindings.Add(EnlaceNombre)
    Dim EnlaceDireccion As New Binding(“Text”, MiEnlazador, “Phone”)
    Telefono.DataBindings.Add(EnlaceDireccion)
End Sub
 
' Avanzar un registro dentro del ‘recordset’ :-)
Sub Avanzar()
      MiEnlazador.MoveNext()
End Sub
 
' Retroceder un registro
Sub retroceder()
      MiEnlazador.MovePrevious()
End Sub
 
'Añadir un registro
Sub Nuevo()
      MiEnlazador.AddNew()
End Sub
 
' Actualizar el registro en curso o el recien creado
Sub Actualizacion()
      MiEnlazador.EndEdit()
      MiAdaptador.Update(CType(Me.MiEnlazador.DataSource, DataTable))
End Sub

Saludos,
Pep Lluis,

Principales Mandatos del Puerto Serie :: Remix

El cambio de blog ha provocado que algunos de los post mas famosos no puedan visualizarse correctamente. algunos de vosotros me habéis pedido un “Remix” aquí tenéis uno de los mas visitados!
' Principales mandatos para utilizar el puerto serie:
Serie = My.Computer.Ports.OpenSerialPort("COM1")  'Constructor
'
'Definir las características de la comunicación
Serie.BaudRate = 19200        'velocidad de comunicaciones
Serie.DataBits = 8            'Longitud para Byte de datos
Serie.Parity = Parity.Even    'paridad(enumeracion parity)
Serie.StopBits = StopBits.Two 'Bits parada después datos

'
'Abrir/Control/Liberar Puerto
Serie.Open()            'Abrir el puerto Serie
Serie.Close()           'Cerrar el Puerto Serie
Serie.Dispose()         'Liberar objecto
Dim SiNo As Integer
SiNo = Serie.IsOpen     'El Puerto esta abierto?
Dim Puerto As String
Puerto = Serie.PortName 'Nombre del puerto

'
'Manejo y Control de señales
Dim Estado As Boolean     'True=Activa / False=Inactiva
Estado = Serie.CDHolding  'Estado de la señal carrier detect
Estado = Serie.CtsHolding 'Señal Clear to Send
Estado = Serie.DsrHolding 'Señal Data Set Ready
Serie.DtrEnable = True    'Activar de Data Terminal Ready
Serie.RtsEnable = True    'Activar Request To Send

'
'Control Transmission/Recepcion
Serie.ReadBufferSize = 1024  'Definir tamaño buffer recepcion
Serie.WriteBufferSize = 1024 'Definir tamaño buffer envio
Serie.ReadTimeout = 10       'Fuera de tiempo en receción
Serie.WriteTimeout = 10      'Fuera de tiempo en transmisión
Serie.Handshake = Handshake.XOnXOff 'Control recepcion/envio
Serie.DiscardInBuffer()             'Borrar buffer de entrada
Serie.DiscardOutBuffer()            'Borrar buffer de salida

'
'Enviar datos
Contador = Serie.BytesToWrite 'Bytes en espera de ser escritos
Serie.Write("Hola Mundo")     'Enviar una cadena de caracteres
Serie.WriteLine("Hola Mundo"'Enviar una linea

'
'Leer datos
Dim Contador as Integer
Contador = Serie.BytesToRead  'Bytes en espera de ser leidos
Serie.ReadByte()              'Leer un byte
Serie.ReadChar()              'Leer un char
Serie.ReadLine()              'Leer una linea
Serie.ReadExisting()          'Leer datos existentes en buffer

PepLluis :-)

El origen del Codigo Abierto

Recuerdo como si fuera ayer la primera vez que escuche el concepto “código abierto”. Luego volqué mi interés en desvelar los secretos del mismo devorando literatura entorno a la nueva filosofía, por aquellas épocas promulgada principalmente por el singular Richard Stallman.

En el fondo siempre tuve la sospecha de que alguna pieza no encajaba del todo en el recetario de dicha filosofía. Esa sospecha me sirvió de convencimiento para iniciar una incansable tarea de investigación que me permitiera desvelar que se ocultaba detrás de tan mágicas siglas.

Después de largos años de búsqueda, finalmente he podido desvelar el origen de una de las filosofías tecnologías que ha movilizado a la mayor masa de adeptos, simpatizantes, creyentes y practicantes de todas las épocas.

De forma inesperada y justo en una olvidada calle detrás del ‘Mercat de les flors’ de BCN he encontrado la prueba definitiva que evidencia empíricamente mi premonición… digitalizado en una vieja pizarra muestra sin lugar a dudas que : nuestras abuelas ya utilizaban código abierto!

Para los neófitos debéis considerar la gran importancia del descubrimiento, pues sin duda no todos los días podemos decir que hemos encontrado las fuentes de nuestro origen y con el mismo hecho poder responder de forma contundente la eterna pregunta “de dónde venimos?”.

CodigoAbierto
El Origen del Codigo Abierto


La riqueza de las palabras es inagotable! :-)
PepLluis,

 

Wearables – la chispa para big IoT bang

Llevo mucho tiempo hablando de los “wearables” y su relación con el internet de las cosas. A menudo explico con pasión y convencimiento de la enorme oportunidad que tenemos frente al gran despliegue de tecnológica lista para ser usada, ciertamente es curioso percibir una sensación recurrente de algunas personas que de forma incontenible muestran en su cara una expresión que delata supuestos pensamientos de incredulidad, pensamientos que casi verbalmente podría traducir en frases como… de donde habrá sacado este chiflado tales ideas?

Esto no me preocuparía lo mas mínimo si dichas “expresiones” las observara en mis padres al contarles lo que significará la próxima revolución de internet, seguramente reaccionarían recordándome mi etapa de “Julio Verne” e “Isaac Asimov” cuando era Joven y probablemente inmaduro. Sin embargo lo preocupante  es que esta sensación de “estar explicando fantasías” las recibo sobre todo cuando doy charlas, presento o propongo “nuevas o diferentes” formas de visualizar la potencialidad de recursos relacionados con el internet de las cosas delante de personas con perfiles tan diversos como empresarios, inversores o incluso algunos académicos!

Con independencia de tales perfiles, algunos en un derroche de sinceridad declaran no entender de lo que les estás hablando cuando haces referencia al “cloud” y a lo sumo para no ofender en tono de humor lo justifican diciendo que a su opinión “explicas humo o eres un anticipao”… ya veis el futuro es esperanzador! :-)

No quiero ser muy critico, pero en muchos escenarios somos tan ‘papistas’ que a menudo en ciertas esferas nos creemos estar en lo último de la tecnología simplemente porque participamos en alguna de esas  conocidas “leagues”, montamos una 3D o programamos alguna de esas placas de electrónica con fama. Sin duda la forma fácil para “bombo, platillo, prensa y marca”.

Con sinceridad no nos podemos permitir que nuestros futuros profesionales tengan la estrecha visión de que la tecnología se reduce a placas con nombre de frutas o un programa de simple bucle ejecutado en una placa “duino” controlando un Dron un Quad o un vehículo guiado. Es muy triste cuando hablando con algún estudiante que ha finalizado un grado de mecatrónica te explica que sabe programar “duinos”… pues lamentablemente eso también lo saber hacer el hijo de un amigo con poco mas de 10 años.

Por contra NO es quitar méritos! Nadie pone en duda de las excelentes capacidades didácticas de tales materiales, y de un montón de tecnología que nos ofrece un buen punto de entrada para la inspiración y desarrollo de las capacidades creativas, sin duda es un discurso adecuado. Aunque existe un paso más allá de las “Maker faire” o “Garage Maker” o las “Leagues’s” donde se dibuja una gran oportunidad para los que logren visualizar un escenario único e irrepetible donde las oportunidades de que los que sepan apostar por ello se multiplicaran sin duda por cien en el futuro.

Al fin y al cabo la perspectiva sobre los “Wearables” es que son una parte minúscula dentro la telaraña de posibilidades brindadas por ese “mix” donde confluyen hard y soft integrándose como parte fundamental de nuestro internet cotidiano : Personas, Dispositivos y Sistemas.

No pretendo hacer marca, simplemente creo que lo positivo es compartir opiniones y algún que otro corto para dar a conocer  diferentes visiones, es importante conseguir una óptica global y un posicionamiento plural con mentalidad abierta. Esa formula nos permitirá descubrir y sacar máximo partido de todo lo que el panorama actual esta poniendo a nuestra disposición.



A todos los que tengáis inquietud de participar en nuestra nueva iniciativa para formar un grupo de trabajo entorno al IoT envíanos un correo a : spain_net[arroba]msn.com

Vuestras opiniones cuentan! :-)

VB Async Await CancellationToken

Os dejo un corto sobre Async, Await, como ya sabréis mejora mucho la respuesta del GUI… asi que ya no teneis excusa para dejar a la peña con el relojto esperando que terminen ciertas tareas..  :-))


Private cts As CancellationTokenSource
Async Sub btnStart_Clik(sender As Object, e As EventArgsHandles btnStart.Click
    btnStart.Enabled = False
    Try
        cts = New CancellationTokenSource
        Await Task.Run(Sub()
                           longThingsProcessing(cts.Token)
                       End Sub, cts.Token)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    btnStart.Enabled = True
End Sub
 
Sub btnCancel_Click(sender As Object, e As EventArgsHandles btnCancel.Click
    cts.Cancel()
End Sub
 
Sub longThingsProcessing(ct As CancellationToken)
    Try
        Dim charNumber As Integer = 0
        For x As Integer = 0 To 200000
            ct.ThrowIfCancellationRequested()
            charNumber += 1
            If charNumber > 255 Then charNumber = 0
            updateTitle(String.Format("Doing loop : {0}, Char {1}", x.ToString, Chr(charNumber)))
        Next
    Catch ex As Exception
        updateTitle("Operation was cancelled")
    End Try
End Sub
 
Delegate Sub textUpdate(text As String)
Sub updateTitle(_text As String)
    If Me.InvokeRequired Then
        Dim _me As New textUpdate(AddressOf updateTitle)
        Me.Invoke(_me, _text)
    Else
        Me.Text = _text
        Me.Refresh()
    End If
End Sub

Futuros Weareables ARMados de procesadores de pequeñas dimensiones 2×1,2mm

Parece que cada vez mas, en cierta medida visionar el futuro es creer e imaginar lo imposible.
Muchos escépticos, vaticinan una compleja aceptación de los ‘weareables’ por un mercado que según los estudios dicen que los usuarios se aburren de utilizarlos con una media aproximada de seis meses.


Seguramente es cierto, lo que también es cierto es la imparable irrupción de potentes dispositivos procesadores a nivel de fabricantes lideres del sector, que hacen explotar al mercado en una hola imparable de posibles aplicaciones impensables hasta la fecha y a la par queramos o no auguran un futuro repleto de inteligentes “weareables”.


Os recomiendo la lectura de John Morris sobre el posicionamiento de la industria en el “Computex 2014″ hablando sobre las nuevas generaciones de procesadores ARM Cortex.
Internet of Things… esta despertando :-)


http://www.zdnet.com/computex-2014-arm-shifts-focus-to-wearables-internet-of-things-7000030132/


Cuidaros,
PepLluis,


 

Paneles solares para carreteras!

Hace un par de años estuve desarrollando un sistema de carga de vehículos eléctricos en la vía publica “cuando el plan Movele”


En mis conversaciones con profesionales siempre frivolizábamos sobre la posibilidad de convertir el asfalto en paneles solares…


Sabemos que miles de ingenieros despiertan con ideas paralelas pensando en cómo aportar soluciones a un determinado problema, la diferencia entre los buenos y los mediocres es que mientras creen en dichas soluciones hasta el extremo de llevarlas a cabo por muy alocadas que parezcan, los otros simplemente se ríen pensando que son quimeras imposibles.


Quizás debamos aprender de las locuras de algunos J


Os presento el Solar Freakin Roadways de sant diego… no tiene desperdicio!


https://www.youtube.com/watch?v=qlTA3rnpgzU#t=223


Ya me diréis que os parece.
PepLluis,

From SerialPort to IoT Devices