Feliz Navidad y Prospero año nuevo!
Con la esperanza de reconciliar a la sociedad para encontrar nuevas formas de recuperar puestos de trabajo y el bienestar de las personas necesitadas.
Sin duda necesitamos caminar juntos para definir nuevos escenarios para que el mundo sea relamente mejor.
Mis mejores deseos para que este 2013 se convierta en el Año de pan con azúcar y vino!
 
Merry Christmas to you and your family as well
Hoping reconcile the society to find new ways to recover jobs and the day to day welfare for the needy people.
With no doubt we need walk together to define a new scenario to make the world better.
My best wishes to make this 2013 becomes the Year of bread with sugar and wine!
:-))
 
Tio
 
Pep Lluis,
Catalonian Claus.
Posted by peplluis | with no comments
Filed under:

This is an small sample code to show how to build our basic gadgeteer web server using VB with Spider and the 4.2 RTM Premium library's.
Start Visual Studio with a new gadgeteer project and copy/paste...That's all! (remember add library's references)

Imports System.Net
Imports System.Text
Imports Microsoft.SPOT.Hardware
 
Imports GHI.Premium.Net
 
Imports GT = Gadgeteer
 
Partial Public Class Program
 
    Private WithEvents ethernet As New EthernetBuiltIn()
    
    Private ip As New IPAddress(New Byte() {0, 0, 0, 0})
    Private WithEvents myweb As WebEvent
    '
    Private WithEvents timer As GT.Timer = New GT.Timer(1000)
 
    Public Sub ProgramStarted()
        'Initialize adapter
        ethernet.Open()
        ethernet.NetworkInterface.EnableDhcp()
        ethernet.NetworkInterface.EnableDynamicDns()
        NetworkInterfaceExtension.AssignNetworkingStackTo(ethernet)
        'app timer on
        timer.Start()
    End Sub
 
    Private Sub ethernet_CableConnectivityChanged(sender As Object, e As GHI.Premium.Net.EthernetBuiltIn.CableConnectivityEventArgsHandles ethernet.CableConnectivityChanged
        If e.IsConnected Then
            ' reboot device after plug... to startup again
            PowerState.RebootDevice(True)
        End If
    End Sub
 
    Private Sub ReceivedWebEventHandler(path As String, method As WebServer.HttpMethod, responder As ResponderHandles myweb.WebEventReceived
        ' webb response
        responder.Respond(New System.Text.UTF8Encoding().GetBytes("Hello from " + ip.ToString() + " At " + System.DateTime.Now.ToString()), "text/html")
    End Sub
 
    Private tic As Boolean
    Private Sub timer_Tick(timer As Gadgeteer.TimerHandles timer.Tick
        ' blink debug led... system working
        tic = Not tic
        Mainboard.SetDebugLED(tic)
        ' get an IP from DHCP if no previous one
        If (ip.ToString = "0.0.0.0"And ethernet.IsCableConnected Then
            ip = IPAddress.GetDefaultLocalAddress()
            WebServer.StartLocalServer(ip.ToString(), 80)
            myweb = WebServer.SetupWebEvent("Hello")
        End If
    End Sub
End Class

Regards,
PepLluis,

Pos Eso! :-) un nuevo gran recurso.

La Biblioteca de imagenes de Visual Studio contiene imágenes de aplicaciones que aparecen en Microsoft Visual Studio, Microsoft Windows, Office System y otros programas de Microsoft, esta biblioteca continene más de 5.000 imágenes que se pueden utilizar para crear aplicaciones que se parecezcan visualmente y de forma consistente con el estilo de software de Microsoft.

http://www.microsoft.com/en-us/download/details.aspx?id=35825

Saludos,
PepLluis, 

Posted by peplluis | with no comments
Filed under:

Conversando con un compañero que en 2009 asistimos a una charla sobre Microframework en el TechEd de Barcelona, me comentaba que era una lástima que netmf no pudiera ejecutar hilos….. Mi respuesta fue: Pero hombre! desde entonces ha llovido mucho!! Jajajaja.

Si habrá llovido que incluso ya está en ruta la versión 4.3 que se integrara en Visual Studio 2012.

Evidentemente estos últimos cuatro años como ya vengo diciendo en los últimos post, han dado una sana madurez a netmf. Si además del montón de funcionalidades actuales de netmf también disponemos de threats.

Valga este modesto ejemplo, para manejar dos ‘threading.timers’ :

Imports Microsoft.SPOT
Imports System.Threading
 
Namespace MFConsoleApplication1
    Public Module Module1
        Private tmr1 As New Timer(New TimerCallback(AddressOf tic), Nothing, 1000, 500)
        Private tmr2 As New Timer(New TimerCallback(AddressOf tac), Nothing, 1000, 500)
 
        Sub Main()
            ' desfasar el primer hilo del segundo para crear el Tic Tac
            Thread.Sleep(500)
            ' poner a dormir al hilo principal
            Thread.Sleep(System.Threading.Timeout.Infinite)
        End Sub
 
        ' CallBack para tic
        Sub tic(ByVal state As Object)
            Debug.Print("Tic")
        End Sub
        ' CallBack para cac
        Sub tac(ByVal state As Object)
            Debug.Print("Tac")
        End Sub
 
    End Module
 
End Namespace

Saludos,
PepLluis,

Posted by peplluis | with no comments
Filed under:

Como probablemente sabréis el pasado 22 de noviembre se celebro en el teatro Goya de Madrid uno de los eventos anuales más importantes en torno a las tecnologías de Microsoft. Este evento reúne empresas y profesionales del sector entorno a conferencias temáticas específicas para desarrolladores y IT pros.

También fue una oportunidad única para esas reuniones “tu a tu” entre colegas, donde fraguar conversaciones que al fin y al cabo dinamizan a la comunidad en busca de esa inspiración donde compartir se convierte en la capacidad de visualizar nuestro futuro profesional más próximo.

Otro de los valores añadidos en este evento, fue la posibilidad de contactar con los principales expertos de las principales tecnologías de Microsoft. Los asistentes pudieron conversar en el “ATE” frente al mostrador de MVP’s.

En esta ocasión aproveche este fantástico escenario para presentar el Microsoft “Gadgeteer”, con el propósito de fundamentar una nueva “micro” comunidad entorno a este estupendo proyecto. En la “Show Room” J pudimos ver dos “bread boards” conteniendo una muestra de implementación de casi todos los procesadores disponibles en el mercado a día de hoy.

Muchos de vosotros mostrasteis un curioso interés sobre esta madura plataforma para pequeños dispositivos, que en breve podrá incluirse a Visual Studio 2012, por este motivo he considerado adecuado dedicar este pequeño corto, con el propósito de resposder a la repetida pregunta “y esto que es?” jajajaja.

Pues:

NET Micro Framework representa la versión más pequeña de punto NET. Está orientado a pequeños sistemas con recursos limitados, pero con alto grado de integración en periféricos embebidos dentro de un mismo procesador. Además cuenta con innovador y completo entorno desarrollo, ejecución y depuración, aportando la productividad de las herramientas modernas a programación de sistemas embebidos.  En la actualidad se  ofrece bajo una licencia de código abierto (Apache 2.0), aunque todavía su estatus de desarrollo está activo dentro de Microsoft, también se encuentra en coordinación con las contribuciones abiertas a la comunidad técnica.

·         Fácil desarrollo de potentes aplicaciones interactivas, integradas y complejas.

·         Conexión de dispositivos a través de protocolos inalámbricos o por cable.

·         Desarrollo rápido de soluciones fiables y robustas a un menor coste.

·         Desarrollo de soluciones para dispositivos conectados utilizando las mismas herramientas que se utilizan para desarrollar aplicaciones de servidor o para la nube.

Aprende más acerca de .NET Micro Framework en  : MSDN › o NETMF.COM ›

En 2011 Microsoft Research anuncio la liberación de NET Gadgeteer, una plataforma que permite construir y depurar prototipos de dispositivos electrónicos de forma rápida y sencilla. En general está orientado a educadores, desarrolladores y aficionados, los prototipos se construyen uniendo distintas unidades NET Gadgeteer o módulos a una unidad central de proceso. Existe una amplia gama de módulos enchufables que proporcionan diferentes funcionalidades… visualización, control, comunicaciones, etc. Las principales claves radican en no requerir conocimientos previos de electrónica ni habilidades para realizar soldaduras, este nuevo concepto permite desarrollar refinados prototipos o dispositivos electrónicos en un tiempo extraordinariamente bajo.

"NET Gadgeteer es una plataforma de gran alcance que le permite crear muy rápidamente sofisticados dispositivos -. Incluso sin mucha experiencia previa", Según Steve Hodges, Principal ingeniero de hardware en Microsoft. "Este proyecto empezó como una herramienta interna para Microsoft Research Cambridge, rápidamente se hizo evidente su especial atractivo para personas ajenas al laboratorio. La liberación del código a la comunidad técnica hará que esta poderosa tecnología este disposición de los demás, incluyendo aficionados, profesores, investigadores y desarrolladores que nos han dado una respuesta tan positiva hasta la fecha. "

Espero vuestros comentarios y preguntas.
PepLluis,

Posted by peplluis | 2 comment(s)
Filed under:

Simplemente es un recordatorio sobre la disponibilidad de la primera actualización para Visual Studio 2012.

Aqui teneis el enlaze : http://www.microsoft.com/visualstudio/esn/downloads#d-visual-studio-2012-update

Saludos,
PepLluis,

La lista de mejoras es la siguiente :

  • Funcionalidades ALM adicionales en SharePoint (como el soporte para pruebas de carga y para pruebas de interfaz de usuario codificadas), mejoras de calidad, escalabilidad y agilidad.
  • Planificación ágil más sencilla con acceso web y nuevo soporte Kanban, además del soporte Scrum existente.
  • Mejoras para las pruebas, desde la organización de pruebas unitarias hasta un flujo de trabajo más flexible para la ejecución de pruebas manuales.
  • Desarrollo mejorado de aplicaciones de Windows 8, como el soporte para depurar aplicaciones mixtas administradas y nativas de la Tienda Windows y una depuración ARM mejorada para aplicaciones de Windows 8.
  •  

    Posted by peplluis | with no comments
    Filed under:

    Antecedentes:
    No se ha realizado ningún cambio en el servidor desde que se agrego la última colección con la consola de Team Fundation.

    Aparentemente se completa todo el proceso, hasta que aparece un mensaje de error rezando que no se puede contactar con el servicio en http://{ServerName}:17012.

    Al revisar IIS en el administrador, el pool del SCA está detenido. Si intentamos iniciarlo, vuelve a detenerlo en cuanto intentemos examinar de nuevo SCA y siempre recibiremos el “Service Unavailable” por respuesta.

    Causas:
    El pool no puede iniciarse porque la identidad del grupo, fue configurada con una cuenta personalizada. En tal caso cuando se cambian las credenciales de dicha cuenta, el pool deja de ponerse “En Servicio”.

    Resolución:
    Si continúas empeñado en utilizar una cuenta personalizada, deberás cambiar las credenciales asignadas inicialmente para que coincidan por las actuales. Asi de Simple!
    J

    >Pool>Configuración Avanzada>Identidad de grupo de aplicaciones>Establecer Credenciales

    Saludos,
    PepLluis,

    Posted by peplluis | with no comments
    Filed under:

    Otra de las nuevas para VB11 es la posibilidad de combinar Lambdas e Iteradores :-) me encanta la dulzura de las expresiones en VB y encima incrustando XML en el editor… no todos los lenguajes pueden alardear de ellos ;-) jajajajaja.

    Llevamos tiempo hablando de expresiones Lambda, y a la mayoría nos cuesta adoptar de forma natural la escritura de la mismas dentro de nuestros escenarios habituales.

    El siguiente ejemplo, intenta introducir y dar coherencia a su uso, poniendo en acento en las extensiones de unión ‘Yield’ para combinar el contenido con el cuerpo de literales XML.

    No olvideis el 'Imports System.IO.Directory' para poder llamar a la funcion 'EnumerateFiles'.

        Dim myExplorer As New WebBrowser
        Dim myImageWall As
    XElement
        Me
    .Controls.Add(myExplorer)
        myImageWall =
                <html
    >
                      <body
    >
                             <%= Iterator Function
    ()
                                           For Each filename In EnumerateFiles("C:\Users\PepLluis\Pictures", "*.jpg"
    )
                                                 Yield <img src=<%= filename %>></img
    >
                                           Next
                                      End Function.Invoke()
    %>
                      </body
    >
                 </html
    >
        myExplorer.DocumentText = myImageWall.ToString

    Para los que lo ven todo simple es tan sencillo como incrustar sentencias y expresiones!

    Espero que os guste.
    PepLluis,

    Posted by peplluis | with no comments
    Filed under:

    'Como empezar con "Cerberus" (Como atencion al Sr. Frederick)
    '
    ' Descargar/Instalar el sdk 4.2QFE2 de netmf : http://netmf.codeplex.com/downloads/get/470705
    ' Descargar/Instalar el sdk 4.2RC2 de GHI : (puedes encontrarlo el la pagina de detalles "Cerberus".
    '
    ' Una vez instalado...
    ' - Ejecutar una instancia de Visual Studio 2010
    ' - Nuevo Proyecto
    ' - Escoger Visual Basic>Gadgeteer>.Net Gadgeteer Aplication (NETMF 4.2)
    ' - Copiar y pegar este codigo... y listo!, el Led verde parpadeara hasta el fin de los tiempos :-)

    Imports GT = Gadgeteer
    Imports
    GTM = Gadgeteer.Modules
    Partial Public Class
    Program

      Public
    Sub ProgramStarted()
          timer.Start()
         
    Debug.Print("Program Started"
    )
      End Sub

      Dim WithEvents timer As GT.Timer = New GT.Timer(1000) ' un cop per segon (1000ms)
      Dim tic As Boolean = False

      Private
    Sub timer_Tick(timer As Gadgeteer.Timer) Handles
    timer.Tick
          tic =
    Not
    tic
          Mainboard.SetDebugLED(tic)
      End
    Sub

    End
    Class

    Posted by peplluis | with no comments
    Filed under:

    Creo que ya va siendo tiempo de que hablemos de las novedades del nuevo Visual Basic “Compilador VB11” y Visual Studio 2012 J

    Esta es una de aquellas guindillas que simplifica el código, tales como la introducción de “no más _ de continuación de línea”.en VB10.

    Pues en VB11 “No mas ByVal” en las firmas de método.
    Aunque parezca una simpleza, mejora el aspecto visual y se hace mas agradable de leer cuando lo ves en las declaraciones de método.

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    End Sub

    'ni ByVal... ni System en EventArg
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles
    Timer1.Tick
    End Sub

    Enga... a picar!
    Saludos,

    Posted by peplluis | 3 comment(s)
    Filed under:

    Un pequeño post anunciando un gran recurso libre para la comunidad, la version express del producto ya puede descargarse en el siguiente link:

    http://www.microsoft.com/visualstudio/esn/downloads#d-2012-express

    Espero que lo disfruteis!
    PepLluis,

    Posted by peplluis | with no comments
    Filed under:

    Una de las características mas esperadas para "Visual Studio 2012" es sin duda las plantillas de app's para "Windows 8".
    Debo advertiros que las plantillas no están disponibles si tu entrono de desarrollo no es "Windows 8", por lo tanto no estarán disponibles si lo instalas en un "Windows 7" :-)

    Su versión en Ingles reza "Windows Metro Style", como ya sabéis "Spain is diferent" y en vez de hablar de aplicaciones "Metro"... en nuestro curriculum deberemos decir que somos programadores de "Tienda Windows" LOL!

    Una simpática manera de empezar,
    Saludos,

    Posted by peplluis | with no comments
    Filed under:

    Por peticion de un amable lector...

    Como punto de entrada para construir un 'WebServer' sin gadgeteer en C# y para microframework, os dejo la siguiente entrada :

            NetworkInterface networkInterface = NetworkInterface.GetAllNetworkInterfaces()[0];
            WebEvent myweb;
            void ProgramStarted()
            {
                Debug.Print("Program Started");
                Debug.Print("IP Address: "  + networkInterface.IPAddress.ToString());
                Debug.Print("Subnet Mask: " + networkInterface.SubnetMask.ToString());
                Debug.Print("Gateway: "     + networkInterface.GatewayAddress.ToString());
                System.Threading.Thread.Sleep(1000);
                // 
                WebServer.StartLocalServer(networkInterface.IPAddress.ToString(), 80);
                myweb = WebServer.SetupWebEvent("Hello");
                myweb.WebEventReceived +=new WebEvent.ReceivedWebEventHandler(myweb_WebEventReceived);
            }

            void myweb_WebEventReceived(string path, WebServer.HttpMethod method, Responder responder)
            {
                byte[] bte = new System.Text.UTF8Encoding().GetBytes("Hello from " + networkInterface.IPAddress.ToString() + "At " + System.DateTime.Now.ToString());
                responder.Respond(bte, "text/html");
            }
        }
    
    
    Saludos,
    PepLluis,
    Posted by peplluis | with no comments
    Filed under:

    Hace aproximadamente diez años me empeñe en introducirme al desarrollo de una pila TCP/IP para micro-controladores de recursos limitados. Constaba mas de trescientas paginas repletas de código C, ciertamente desistí de implementar mi propio “MicroWebServer” incrustado en un solo chip.

    El tiempo pasa y es un verdadero lujo constatar como los sistemas embebidos toman el pulso a una nueva etapa donde ofrecer servicios integrados en micro dispositivos deja suelta a nuestra creatividad.

    Fijaros en este código:

    Imports GT = Gadgeteer

     

    Partial Public Class Program

     

        Private WithEvents adapter As New Ethernet(7)

        Private WithEvents myweb As WebEvent

     

        Private Sub ProgramStarted()

            Debug.Print("Program Started")
            adapter.UseStaticIP("192.168.1.1", "255.255.255.0", "192.168.1.1"

        End Sub

     

        Private Sub myweb_WebEventReceived(path As String,

                                           method As Gadgeteer.Networking.WebServer.HttpMethod,

                                           responder As Gadgeteer.Networking.Responder) Handles myweb.WebEventReceived

            If path = "Ping" Then

                Dim pag = "<html>" +

                              "<body>" +

                                  "<h1>" +

                                      "Response from " + adapter.NetworkSettings.IPAddress.ToString +

                                  "</h1>" +

                              "</body>" +

                          "</html>"

                Dim bte As Byte() = New System.Text.UTF8Encoding().GetBytes(pag)

                responder.Respond(bte, "text/html")

            End If

        End Sub

     

        Private Sub adapter_NetworkDown(sender As Gadgeteer.Modules.Module.NetworkModule,

                                        state As Gadgeteer.Modules.Module.NetworkModule.NetworkState) Handles adapter.NetworkDown

            Mainboard.SetDebugLED(False)

            WebServer.StopLocalServer()

        End Sub

     

        Private Sub adapter_NetworkUp(sender As Gadgeteer.Modules.Module.NetworkModule,

                                      state As Gadgeteer.Modules.Module.NetworkModule.NetworkState) Handles adapter.NetworkUp

            Mainboard.SetDebugLED(True)

            WebServer.StartLocalServer(adapter.NetworkSettings.IPAddress, 80)

            Debug.Print(adapter.NetworkSettings.IPAddress)

        End Sub

    End Class

     

    Me gustaría recibir vuestros comentarios,
    PepLluis,

    Posted by peplluis | 2 comment(s)
    Filed under:

    Esta claro que es mucho mejor agrupar que distribuir y en ese sentido continúo pensando que la mejor forma de formular y resolver nuestras dudas es en los foros de MSDN.

    Sin embargo bien sea por preferencias o por cualquier otro motivo, algunos de vosotros estáis solicitando poder contactar directamente conmigo para formular vuestras dudas o preguntas.

    Por este motivo, creo que la mejor opción será poner a vuestra disposición unos “foros” específicos, para evitar las tediosas conversaciones privadas iniciadas a través de la opción [Contact].

    Espero que ahora que las conversaciones serán publicas “no os echéis atrás!” y que esto facilite ideas a otros desarrolladores con las mismas inquietudes.

    Estaría encantado de que a partir de ahora, cuando necesitéis contactar conmigo lo hagáis posteando en alguno de estos foros : Desarrollo con VB , Desarrollo con C# , Puertos Serie

    Ahora ya no hay excusas! :-)
    PepLluis,

    Posted by peplluis | 1 comment(s)
    Filed under:

    A todos lectores de este humilde blog.

    Diariamente recibo decenas de preguntas a veces relacionadas con aspectos de los temas posteados y en gran parte con derivadas de las mismas que ayudarían a resolver, dudas y casuísticas particulares.

    En general estoy hablando de preguntas concretas a las que me es imposible contestar, no porque no quiera sino porque la funcionalidad y diseño del “Blog” no esta pensada para ello.

    La presente nota es a titulo de disculpa, pues lejos de ignorar vuestras preguntas me gustaría redirigirla a los foros de la comunidad  MSDN:

    http://social.msdn.microsoft.com/Forums/es-ES/categories/

    Donde no solo me encontrareis a mi, si no que podréis gozar del soporte muchos empleados de MS,.de la mayoría de MVP’S en habla hispana asi como de los mejores profesionales del sector. Sin dejar por menos al grueso de partners, universitarios, estudiantes, entusiastas, aficionados y seguidores en general. Resumiendo "Todos estamos en el mismo ajo" :-)

    En mi caso concreto, intento monitorizar y participar tanto como puedo en los de Lenguaje y Comunicación con dispositivos externos… nos vemos allí!

    Ello no significa que renuncie a vuestros comentarios sobre los artículos y post de este Blog.
    Gracias por vuestra compresión.
    Buenos Juegos!
    PepLluis,

     

    Posted by peplluis | with no comments
    Filed under:

    Hoy se anuncia la liberación de Windows 8 y Windows Server 2012!... para no ser menos tambien se anuncia las compilaciones finales para Visual Studio 2012 y Framework 4.5!

    Sin duda un 1 de agosto para recordar :-)

    Visual Studio estara disponible para los subscriptores el proximo 15 de Agosto y su campaña de Lanzamiento el 12 de septiembre.

    No te pierdas la celebración : http://visualstudiolaunch.com

    Buenos Juegos! y Buenos Studios!
    PepLluis,

    Posted by peplluis | with no comments
    Filed under:

    Uno de los requerimientos habituales en nuestros diseños es la posibilidad de intercambiar tramas con otros dispositivos a través del puerto serie.

    En este ejemplo, realizaremos el punto de entrada para el modulo “usbSerial” en un FEZ-Cerberus. En el siguiente ejemplo recibiremos los bytes enviados por el dispositivo anfitrión y simplemente los reenviaremos… efectivamente! “Echo Response!”.

    Espero os sea útil.
    PepLluis,

    using Microsoft.SPOT;
     
    using GT = Gadgeteer;
    using Gadgeteer.Modules.GHIElectronics;
     
    namespace usbSerialSample
    {
        public partial class Program
        {
            void ProgramStarted()
            {
                // Configurar el modulo serie
                usbSerial.Configure(9600, GT.Interfaces.Serial.SerialParity.None, GT.Interfaces.Serial.SerialStopBits.One,8);
                usbSerial.SerialLine.DataReceived += new GT.Interfaces.Serial.DataReceivedEventHandler(SerialLine_DataReceived);
                usbSerial.SerialLine.Open();
            }
     
            void SerialLine_DataReceived(GT.Interfaces.Serial sender, System.IO.Ports.SerialData data)
            {
                try
                {
                    led7r.TurnLightOn(1, true);                     // Indicar Recepción led 1 (modulo led7r)
                    int toRead = usbSerial.SerialLine.BytesToRead;  // Cantidad de bytes disponibles para leer
                    byte[] buffer = new byte[toRead];               // Dimensionar array para leer del buffer
                    usbSerial.SerialLine.Read(buffer, 0, toRead);   // leer bytes recibidos
                    usbSerial.SerialLine.Write(buffer, 0, toRead);  // reenviar de vuelta bytes recibidos
                    led7r.TurnLightOff(7);                          // apagar led señalizacion "error"
                    led7r.TurnLightOff(1);                          // apagar led 1, para indicar fin operación
                }
                catch
                {
                    led7r.TurnLightOn(7, true);                     // señalizar error encendiendo led rojo (led7r)
                }
            }
     
         }
    }
    
    Posted by peplluis | with no comments
    Filed under:

    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'

    Posted by peplluis | 1 comment(s)
    Filed under: ,

    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,

    Posted by peplluis | with no comments
    More Posts « Previous page - Next page »