Todas las entradas de: peplluis

NETMF4.2 VB, Empezando con Cerberus

‘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

VB11 Que hay de nuevo… Viejo? #1

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,

Visual Studio 2012 y Windows Metro Style

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,

WebServer, MicroFramework, C# y sin Gadgeteer

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,

MicroFramework, Gadgeteer… Alguien dijo WebServer?

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,

Preguntas Directas, nuevos foros especificos.

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,

A vuestras amables Preguntas

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,

 

Ya estan Aqui! Visual Studio 2012 & Framework 4.5

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,

usbSerial test en FEZ-Cerberus

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)
            }
        }
 
     }
}