Todas las entradas de: peplluis

Como rellenar una hoja Excel, directamente de los ‘datapoints’ de un Chart

Esta seria la idea:

Imports Microsoft.Office.Interop
        ' Definir Aplicacion, Hoja y Rango
        Dim oXL As Excel.Application
        Dim oWB As Excel.Workbook
        Dim oRg As Excel.Range
        ' Iniciar excel y obtener objeto "aplicacion"
        oXL = New Excel.Application
        ' Ajustar propiedades a tu gusto
        oXL.Visible = True
        oXL.DisplayAlerts = False
        ' Obtener una nueva hoja
        oWB = oXL.Workbooks.Add
        ' Trabajar con la hoja 1
        Dim ws As Excel.Worksheet = DirectCast(oWB.Worksheets(1), Excel.Worksheet)
        ws.Cells(1, 1) = "Titulo 1"
        Dim Col As Integer = 2
        Dim Row As Integer
        ' Imaginando un LineChar con valores numericos... distribuir series en columnas
        For Each s As Charting.Series In LineChar2D1.chart1.Series
            ws.Cells(1, Col) = s.Name
            Row = 1
            For Each p As Charting.DataPoint In LineChar2D1.chart1.Series(s.Name).Points
                'Mostrar valores en columnas por series
                ws.Cells(Row, Col) = p.YValues(0).ToString("N2")
                Row += 1
            Next
            Col += 1
        Next
        ' Ajustar aspecto final (Seleccionando rangos)
        oRg = CType(ws.Columns("A"Type.Missing), Excel.Range)
        oRg.AutoFit()

No olvideis que en chart tambien disponemos de la utilidad ‘Points.DataBindXY’ para procesarlos en bloque 😉
Espero os sea util,
PepLluis,

PD. No olvideis importar el espacio de nombres de ‘Office.Interop’

Un buen momento para saber como progresa Roslyn

Nuestra visión de compilador continua siendo el proceso por el que el código entra por un extremo, produciendo los binarios que salen por el otro. No dejes de conocer "Roslyn" pues vas a ver como los compiladores de Visual Basic y C # como API’s. Estas API’s van a permitir tener una vista previa de la próxima generación de modelos de objetos y de idiomas para la generación de código, el análisis y la refactorización, y el soporte para el uso de secuencias de comandos interactivos para Visual Basic y C #.

http://msdn.microsoft.com/es-es/roslyn

Saludos,
PepLluis,

GadgetoPlayer!

Te gusta mi ‘GadgetoPlayer’? Cualquier cosa es posible con esta colección de dispositivos con diversos procesadores, con plataformas de distintos fabricantes y un solo entorno MicroFramework en “Visual Studio” y dos lenguajes “VB / C#”… nada mejor para desarrollar prototipos rápidos en tiempo record!

GadgetoPlayer

Saludos,
PepLluis,

Visual Studio, MicroFramework, Visual Basic, .net Gadgeteer, Fez Hydra, Fez Cerberus.

En anteriores “post”, os hablaba de la madurez de net Microframework 4.2, una de las características más noticiables “al menos para mí “, fue la incorporación de Visual Basic como lenguaje de programación de pequeños micros. Sin duda una asignatura pendiente considerando que históricamente el “Basic” ha sido uno de los lenguajes más usados por gran número de entusiastas… recordemos el intérprete del Intel MSC51 o el reciente “Basic Stamp”.

Durante años, muchos de los que vivimos “aquellas épocas” demandábamos la incorporación de un lenguaje moderno como “Visual Basic” y echábamos de menos poder programar los nuevos silicios “todo en uno” dentro de un entorno .net con todos los beneficios que ello comporta… uso del mismo IDE, generación IL, compilación JIT, debug on line, y un largo etc.

Posteriormente y como fruto de trabajos realizados en Microsoft Research, la versión 4.1 del MicroFramework hizo las delicias de los programadores en C# incorporando a Visual Studio la posibilidad de instalar “.net Gadgeteer” conteniendo un rico conjunto de módulos enchúfables, ello permite crear fácilmente proyectos MicroFramework orientados a la realización rápida de prototipos electrónicos utilizando sencillos “Gadgets” listos para arrastrar y soltar dentro de un entorno asistido llamado “Gadgeteer”.

Entonces cual es la noticia?

Pues simplemente que para alegría de los “VB”, ya podemos jugar con las versiones preliminares del “firmware” para placas como “Fez Hydra” y “Fez Cerberus” y .net Gadgetter. Es emocionante estar jugando con los “Gadgets” en Visual Basic!.

No tardéis en apuntaros a la «onda» Gadgeteer.
Os espero en mfDevices! y sus Foros!

Saludos,
PepLluis,

Vamos a escribir una Historia

Ayer 23 de Abril, celebramos el día del Libro y la Rosa, Entre libros i cumpleaños de aquellos primeros sistemas “todo en uno” que hicieron las delicias de los entusiastas de microprocesadores y microsistemas: Hoy me complace compartir con todos mis lectores un momento muy especial; os presentamos el inicio de la primera comunidad de Habla hispana entorno a dispositivos Microframework y toda la cacharrería electrónica asociada en forma de ‘gadgeteer’.

Sin duda una ocasión única de retomar la pasión por la programación de pequeños dispositivos y la construcción de creativas aplicaciones estrechamente relacionadas con electrónica.  

Mucho ha llovido desde los ‘sinclairs’ y los ‘commodores’, con sus 8 bits, 1k y los 4Mhz. Os invito a participar activamente en esta nueva comunidad de los procesadores ARM, con sus 32bits, velocidades de vértigo y casi sin limite de memoria.

Si sientes nostalgia de esos tiempos, te parecerá increíble poder programar y depurar directamente desde Visual Studio tan solo pulsado F5 y por supuesto utilizando nuestro lenguaje favorito…. Visual Basic o C#. 

No olvidéis visitar mfDevices  si queréis estar al día.

Se el primero en estrenar los foros : Foro mfDevices

o date una vuelta por el Blog :
Blog mfDevices

Como veis, este año vamos a Escribir un LIBRO!.
Os espero,
PepLluis,

 

La Arquitectura de .NET Micro Framework

Siguiendo una conversación muy interesante sobre Micro Framework y las dudas que surgen a la hora de implementar o desplegar aplicaciones, me complace compartir ciertas puntualizaciones sobre su arquitectura con el fin de clarificar e identificar cada uno de sus componentes.

Generalmente una de las principales confusiones es distinguir donde se encuentra ubicada cada una de sus capas. En ese sentido situaremos a nuestras aplicaciones y Visual Studio en el lado de ‘Código administrado’ y el resto representado a la parte de ‘Código Nativo’ que residirá en el chip. Deberemos diferenciar los cargadores o ‘TinyBooters’ del propio MicroFramework.

La implementación del ‘Codigo Nativo’ deberá realizarse en dos fases diferentes, en la primera transferiremos los cargadores y en la segunda el firmware de la electrónica.

Veamos su Arquitectura.

Para una mayor comprensión acerquémonos con un poco más detalle:    

Finamente la síntesis de toda esta arquitectura se materializa e implementa a través de tres binarios, uno de ellos conocido como el TinyBooter, representa al cargador (es especifico para cada procesador) y dialoga con MFDeploy que será la herramienta del SDK encargada de ubicar los compilados (o sea el MicroFramework) en el chip, estos binarios obtenidos de ‘msbuild’ y los compiladores C son suministrados por el fabricante de la placa electrónica. Aunque no olvidéis que se puede personalizar para adecuarlo a otras necesidades especificas. Aunque en este caso se requiere disponer de los compiladores nativos en C para el procesador en cuestión. 

Existe un Kit con el código fuente de base para. NET Micro Framework que puede usarse para crear/personalizar el firmware especifico de cada procesador.

Resumiendo:
TinyBooter es el gestor de arranque que permite a MFDeploy ‘flashear’ en tiempo de ejecución el firmware y/o aplicaciones de producción. El firmware está compuesto en la mayoría de los casos por dos archivos, uno de configuración y otro correspondiendo al binario en si mismo.

TinyBooterDecompressor es un archivo autoextraíble que se carga por el gestor de arranque (TinyBooter) en la memoria RAM y luego ejecuta el gestor real de arranque.

La aplicación descargada desde Visual Studio es código MSIL comprimido para mf net 
y luego es interpretado en tiempo de ejecución por el propio .net MicroFramework runtime. 

Para cualquier cosa no dudéis en seguir esta conversación.
Saludos,
PepLluis,

(**) Las figuras anteriores pertenecen a las ‘Brochures’ y presentaciones técnicas del equipo de MicroFramework y por lo tanto son propiedad de MicroSoft.

Si estas cerca de Andorra, el dia 21 tienes una cita!

No te pierdas este EIAV (Evento Internacional de Altos Vuelos) 🙂

Si te consideras geek y estás cerca de Andorra el próximo sábado 21 de Abril, no hagas planes. En AndorraDotNet hemos organizado el primer Geek-â-palooza, en colaboración con la AVIA (Agrupació Virtual d’Informàtics d’Andorra). Un evento de la mano de Microsoft y otras asociaciones del país para traerte las últimas novedades en IT y desarrollo: Desde la presentación en sociedad de Windows 8 cliente y servidor, Windows Intune, Microsoft Office 365, y dos sesiones de desarrollo de aplicaciones para Windows 8.

Nos vemos en Andorra!
PepLluis,

–> Ademas :

Pep Lluís Bano impartirá un pequeño taller sobre .NET MicroFramework en el exterior de la sala de actos de forma paralela a las sesiones. Muchas gracias Pep!

Que es NET MicroFramework? Es el entorno integrado de desarrollo de aplicaciones para pequeños dispositivos con recursos limitados. Ofrece una completa e innovadora plataforma de desarrollo y entorno de ejecución que aportan la productividad de las herramientas informáticas modernas para este tipo de dispositivos, esto significa que ahora se pueden crear aplicaciones que se ejecutan en una variedad de pequeños dispositivos electrónicos con el mismo modelo de programación y herramientas a las que estamos acostumbrados en Visual Studio.

Para los actuales desarrolladores de sistemas integrados, esto significa que ahora pueden aprovechar los beneficios de productividad que se han logrado en las aplicaciones de escritorio y reducir el tiempo de comercialización de sus productos. .NET Micro Framework es una experiencia totalmente integrada a Visual Studio e incorpora un sistema de desarrollo fiable y productivo en sistemas ‘embebidos’.

AsParallel – Sabias que existe? porque no lo usamos!

Muchos desarrolladores continúan si utilizar los “pragmas” que aprovechan y explotan el rendimiento de nuestros equipos con procesadores de varios núcleos.

Dejando de pensar en ‘single’ con tan solo un ‘AsParallel’ nuestros bucles pueden lucir mucho mas agiles.

 

Da un vistazo al siguiente código, te animo a experimentar y perder el miedo a usarlo… et tiempo… si lo cronometras… nos dará la razón.
En este ejemplo podras cronometrar el tiempo empleado en ejecutar tres ‘pings’ en blucle clasico y el siguiente con AsParallel… veras la diferencia!

    ' Sacar partido a la ejecucion paralela, cuando disponemos de mas de un nucleo
    '
    Sub Main()
        Console.WriteLine("Number of processors : " + Environment.ProcessorCount.ToString)
        Dim ips = {"192.168.1.1""192.168.1.3""192.168.1.5"}
        Dim start As DateTime = Now
        ' test de ejecucion para for each clasico
        Dim pings = From ip In ips
                    Select New Ping().Send(ip)
        For Each ping In pings
            Console.WriteLine("{0} : {1}", ping.Status, ping.Address)
        Next
        Console.WriteLine(Now.Subtract(start))
        ' test de ejecucion para for each AsParallel
        Dim start2 As DateTime = Now
        Dim pings2 = From ip In ips.AsParallel()
                     Select New Ping().Send(ip)
        For Each ping In pings2
            Console.WriteLine("{0} : {1}", ping.Status, ping.Address)
        Next
        Console.WriteLine(Now.Subtract(start2))
        Console.ReadLine()
    End Sub

 

Saludos,
PepLluis,

Eso si, después de conversar con un amable lector, ADVERTIROS… que como todo debe hacerse un buen uso con criterio y conocimiento de causa, aplicándolo en funciones donde se justifique :  Pero sin dejar de transmitiros que también es contraproducente dejar de usar las ventajas de utilizar grandes facilidades por el miedo que nos produce experimentar con ellas… así que Ánimos… AsParallel! (Gracias HB)