After a break from the GPSTracker samples I dug out my FEZ Spider devices, upgraded them to .NetMF 4.3 and downloaded the discontinued module drivers so my SeeedStudio GPS would work.
I updated the root certificates in the Microsoft.ServiceBus.Micro resources to the current “Baltimore CyberTrust Root” ones using the process described here
The code is based on the OBD Recorder for .Net Micro Framework with ServiceBus, AMQP (for IoT)
The GPS is initialised with handlers for valid & invalid positions.
gpsStatusLED.TurnRed(); gps.InvalidPositionReceived += gps_InvalidPositionReceived; gps.PositionReceived += gps_PositionReceived; void gps_InvalidPositionReceived(GPS sender, EventArgs e) { gpsStatusLED.TurnRed(); } <code>void gps_PositionReceived(GPS sender, GPS.Position e) { gpsStatusLED.TurnGreen(); }
Once the network interface has an IP address, the time on the FEZ Spider is set (so the certificate from and until times can be checked) and then the ServiceBus connection is initialised
IPAddress ip = IPAddress.GetDefaultLocalAddress(); // Setup the device time if (ip != IPAddress.Any) { .... DateTime networkTime = NtpClient.GetNetworkTime(); Microsoft.SPOT.Hardware.Utility.SetLocalTime(networkTime); ... SASTokenProvider tp = new SASTokenProvider("device", "YourTopSecretKey="); messagingClient = new MessagingClient(new Uri(@"https://YourEndpoint.servicebus.windows.net/YourQueueName"), tp);</code> Once the GPS returns a valid position every so often a message is sent to the service bus queue SimpleMessage message = new SimpleMessage() { BrokerProperties = { { "SessionId", Guid.NewGuid().ToString()}, { "Label", "NMEAPositionData" } }, Properties = { { "Latitude", gps.LastPosition.Latitude.ToString("F4") }, { "Longitude", gps.LastPosition.Longitude.ToString("F4") }, }, }; try { Debug.Print("Message send"); messagingClient.Send(message); Debug.Print("Message sent OK"); } catch (Exception ex) { Debug.Print(ex.Message); }
The send appeared to be quite slow (even on my home LAN so some further investigation is required)
6462mSec
6399mSec
6471mSec
6346mSec
7403mSec
6325mSec
6188mSec
6426mSec
6493mSec
6555mSec
Average 6506mSec
Pingback: Azure Event Hub Updates from a NetMF Device | devMobile's blog