BTDevices ========= Library for handling Bluetooth devices in Windows Store and Windows Phone, in particular devices using NMEA messages. This library makes it easy to connect and listen for NMEA messages from Bluetooth Devices in Windows Store and Windows Phone apps. Usage - Windows Store ===================== Ensure the bluetooth capability is enabled by opening package.appxmanifest in a text editor, and add the following to the section: ``` ``` See more here on bluetooth device capabilities in WinStore: http://msdn.microsoft.com/en-us/library/windows/apps/dn263090.aspx ``` //Get list of devices string serialDeviceType = RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort); var devices = await DeviceInformation.FindAllAsync(serialDeviceType); //Select device by name (in this case TruePulse 360B Laser Range Finder) var TruePulse360B = devices.Where(t => t.Name.StartsWith("TP360B-")).FirstOrDefault(); //Get service RfcommDeviceService rfcommService = await RfcommDeviceService.FromIdAsync(TruePulse360B.Id); if (rfcommService != null) { var rangeFinder = new BTDevices.NmeaDevice(rfcommService); rangeFinder.MessageReceived += device_NmeaMessageReceived; await rangeFinder.StartAsync(); } ... private void device_NmeaMessageReceived(BTDevices.NmeaDevice sender, BTDevices.Nmea.NmeaMessage args) { // called when a message is received } ``` Usage - Windows Phone ====================== Ensure the "ID_CAP_PROXIMITY" capability is enabled in the WMAppManifest.xml file. ``` // Search for all paired devices PeerFinder.AlternateIdentities["Bluetooth:Paired"] = ""; //Get all devices var devices = await PeerFinder.FindAllPeersAsync(); //Select device by name (in this case TruePulse 360B Laser Range Finder) var TruePulse360B = devices.Where(t => t.DisplayName.StartsWith("TP360B-")).FirstOrDefault(); if (TruePulse360B != null) { var device = new BTDevices.NmeaDevice((PeerInformation)TruePulse360B); device.MessageReceived += device_NmeaMessageReceived; } ... private void device_NmeaMessageReceived(BTDevices.NmeaDevice sender, BTDevices.Nmea.NmeaMessage args) { // called when a message is received } ```