Actualizar la fecha y hora actual en Netduino Plus


Cada vez que se inicia el Netduino o hasta que se reinicie, usted encontrará que la fecha y la hora vuelve a los valores por defecto. Desde el lanzamiento de Netduino Plus, con conexión ethernet , este  ofrece una solución bienvenida a esta cuestión.

El Protocolo de Tiempo de Red (NTP) proporciona una manera fácil de sincronizar un dispositivo (por ejemplo, el equipo de Windows) con un servidor de hora de red. Al invocar un servidor NTP en el arranque, el Netduino colocará automáticamente su DateTime.

En el código siguiente se proporciona en el blog de Michael Schwarz y ligeramente modificado para aceptar un adicional (zona horaria) de parámetros:

using System;

using System.Net;
using System.Net.Sockets;
public static class Ntp
{
    public static bool UpdateTimeFromNtpServer(string server, int timeZoneOffset)
    {
        try
        {
            var currentTime = GetNtpTime(server, timeZoneOffset);
            Microsoft.SPOT.Hardware.Utility.SetLocalTime(currentTime);
            return true;
        }
        catch
        {
            return false;
        }
    }
    /// <summary>
    /// Get DateTime from NTP Server
    /// Based on:
    /// </summary>
    /// <param name="timeServer">Time Server (NTP) address</param>
    /// <param name="timeZoneOffset">Difference in hours from UTC</param>
    /// <returns>Local NTP Time</returns>
    private static DateTime GetNtpTime(String timeServer, int timeZoneOffset)
    {
        // Find endpoint for TimeServer
        var ep = new IPEndPoint(Dns.GetHostEntry(timeServer).AddressList[0], 123);
        // Make send/receive buffer
        var ntpData = new byte[48];
        // Connect to TimeServer
        using (var s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
        {
            // Set 10s send/receive timeout and connect
            s.SendTimeout = s.ReceiveTimeout = 10000; // 10,000 ms
            s.Connect(ep);
            // Set protocol version
            ntpData[0] = 0x1B;
            // Send Request
            s.Send(ntpData);
            // Receive Time
            s.Receive(ntpData);
            // Close the socket
            s.Close();
        }
        const byte offsetTransmitTime = 40;
        ulong intpart = 0;
        ulong fractpart = 0;
        for (var i = 0; i <= 3; i++)
            intpart = (intpart << 8) | ntpData[offsetTransmitTime + i];
        for (var i = 4; i <= 7; i++)
            fractpart = (fractpart << 8) | ntpData[offsetTransmitTime + i];
        ulong milliseconds = (intpart * 1000 + (fractpart * 1000) / 0x100000000L);
        var timeSpan = TimeSpan.FromTicks((long)milliseconds * TimeSpan.TicksPerMillisecond);
        var dateTime = new DateTime(1900, 1, 1);
        dateTime += timeSpan;
        var offsetAmount = new TimeSpan(timeZoneOffset, 0, 0);
        var networkDateTime = (dateTime + offsetAmount);
        return networkDateTime;
    }
}

He aquí una breve lista de algunos servidores NTP:

  • pool.ntp.org (en realidad es una colección de servidores detrás de una única dirección)
  • time.nist.gov
  • tiempo-a.nist.gov
  • tiempo-b.nist.gov

Pase uno de estos nombres de servidor como una cadena y llama durante su proyecto principal () de método:

 

private static bool SetTime()

{
    var result = Ntp.UpdateTimeFromNtpServer("time.nist.gov", -4);  // Eastern Daylight Time
    Debug.Print(result ? "Time successfully updated" : "Time not updated");
    return result;
}
Es una pena que el Netduino no es compatible con  Microsoft.SPOT.ExtendedTimeZone.SetTimeZone () para permitir una zona de tiempo especificado (eliminando así la necesidad de que extra «timezoneOffset» parámetro añadí a dos de los métodos) o incluso el Microsoft . SPOT.Time.TimeService.UpdateNow (), lo que haría que todo el código anterior obsoleto. Sin embargo, es comprensible que algunas bibliotecas necesarias para ser despojado debido a las limitaciones de tamaño de memoria
Fuente

aqui

Netduino y Skype


Este proyecto  de Greg Duncan ,utiliza una forma SkyNet ventanas para interceptar los mensajes de una conexión de Skype a distancia y los pasa al Netduino para controlar la posición de una cámara web.
..Después de crear el Pan y Tilt para el proyecto Netduino,  estaba usando VNC remotamente a ver una casa (host) PC desde laoficina (a distancia). Ha utilizado un visor de cámara web para ver la imagen de la webcam y un navegador web para enviar los comandos en el PC host.
Pensó que sería realmente agradable simplificar esta viendo la imagen y el control de la cámara remota utilizando una sola aplicación. Skype parecía un buen candidato para ello.
SkyNet se ejecuta en el PC host y automáticamente se inicia Skype si no se está ejecutando.
Intercepta todos los mensajes de chat recibidos por Skype en la PC host que están destinados a la Netduino.
A continuación, envía estos comandos para el Netduino a través de una conexión de socket. Puede utilizar los botones en el formulario de SkyNet para enviar comandos directamente a Netduino para realizar pruebas. También hay disponible una casilla etiquetada ‘Enviar a Netduino. Puede desactivar esta casilla si el Netduino no se conectan y que desea probar SkyNet. También hay un cuadro donde se debe introducir la dirección IP de la Netduino.
Código para enviar comandos a través de socket con el Pan Netduino y aplicación de inclinación:
PanAndTilt Pan y Tilt Webcam
Este proyecto se utiliza para controlar la orientación de la cámara web desde cualquier navegador web. Ha desarrollado este para que  pudiera controlar el patio trasero a distancia (a través de VNC en el trabajo) 
El hardware del proyecto consta de dos servos para controlar el giro e inclinación de una cámara web por el Netdunio +. El Netduino aceptando órdenes a través de la red y moviendo el servo apropiadamente, usando el Servo_API de Chris Seto. Utiliza los pines 9 y 10 para los servos. Asegúrese de conectar el Netduino a través de la toma de alimentación a un transfroamdor de  9v pues desde el conector USB no se suministra la corriente necesaria para los servos.

Los comandos son enviados desde cualquier navegador a través de la Netduino + IP (ec: http://192.168.0.104 ) seguido de / PanTilt.htm como URL. En mi configuración que utilizo: http://192.168.0.104/PanTilt.htm.

PanTilt.htm es un pequeño archivo HTML que se encuentra en la Netduino + tarjeta SD. Se muestra flechas para controlar la posición de la cámara. Al pulsar sobre la flecha de la izquierda, el navegador envía una «L» a través de la netduino Javascript. El Netduino + PantAndTilt aplicación (que es una modificación de mi solicitud MicroServer) servidor de la página de la tarjeta SD y traducir los comandos, en este caso en una «izquierda» de comando para el servo que controla el eje x. Hay comandos para arriba, abajo, izquierda, derecha y centro.
Este proyecto muestra una serie de cosas interesantes, Skype interoperabilidad, el Pan y Tilt proyecto ya un nivel generalmente fresco de geek ‘ness .
He aquí algunos enlaces más te podrían interesar:
  • Netduino se está abriendo a un público más amplio con el. NET Micro Framework v4.2 liberación
  • Una introducción agradable a Netduino
  • Netduino
  • Seis Lugares Dónde puedo comprar Netduino y Otras Cosas Electrónica
  • Nuevo en el Maker Shed: Netduino, una red con motor de código abierto plataforma electrónica.
  • TWC9: Netduino, Twitter OAuth en Windows Phone, pelado Aplicaciones y física universal
  • Netduino -. NET Micro Framework, el código abierto, la plataforma electrónica, libre (software), paseo de código, sin embargo, cool ..
Articulo original  http://channel9.msdn.com/coding4fun/blog/SkyNet-is-here-not-that-one-Skype–Netduino

solo-electronicos por Carlos Rodriguez Navarro se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.