0

EddyStone ビーコンのデータを読み取ろうとしているので、URL で何かを行うことができます。ただし、フォーマットすると取得し続けます???goo.gl/..

受信した Bluetooth データのデータをログに記録するコードをいくつか書きました。

private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
    // We only need the scannable devices containing data
    if (eventArgs.AdvertisementType != BluetoothLEAdvertisementType.ConnectableUndirected || eventArgs.Advertisement.DataSections.Count < 3)
        return;

    // Do whatever you want with the advertisement
    Encoding asciiEncoding = ASCIIEncoding.ASCII;

    System.Diagnostics.Debug.WriteLine("=========================================================================================== NEW ADVERTISEMENT ===========================================================================================");
    System.Diagnostics.Debug.WriteLine("Address: " + eventArgs.BluetoothAddress);
    System.Diagnostics.Debug.WriteLine("Type: " + eventArgs.AdvertisementType);
    System.Diagnostics.Debug.WriteLine("Strength: " + eventArgs.RawSignalStrengthInDBm);
    System.Diagnostics.Debug.WriteLine("Datasections Count: " + eventArgs.Advertisement.DataSections.Count);
    System.Diagnostics.Debug.WriteLine("Flags: " + eventArgs.Advertisement.Flags);
    System.Diagnostics.Debug.WriteLine("LocalName: " + eventArgs.Advertisement.LocalName);
    System.Diagnostics.Debug.WriteLine("Uuids: " + eventArgs.Advertisement.ServiceUuids[0]);

    string output = "";
    int i = 1;
    foreach(BluetoothLEAdvertisementDataSection data in eventArgs.Advertisement.DataSections)
    {
        var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(data.Data);
        System.Diagnostics.Debug.WriteLine("Data Length: " + data.Data.Length + " / DataReader: " + dataReader.UnconsumedBufferLength);
        byte[] fileContent = new byte[dataReader.UnconsumedBufferLength];
        dataReader.ReadBytes(fileContent);

        string hexString = BitConverter.ToString(fileContent);
        System.Diagnostics.Debug.WriteLine("Datasection" + i + ": " + BitConverter.ToString(fileContent));
        string dataSectionOutput = asciiEncoding.GetString(fileContent, 0, fileContent.Length);
        System.Diagnostics.Debug.WriteLine("Datasection" + i + ": " + dataSectionOutput);

        output += dataSectionOutput;
        output = output.Replace("?", "");

        i++;
    }

    System.Diagnostics.Debug.WriteLine("Output: " + output.ToString());
}

これが私たちの出力です

Address: 220868346281848
Type: ConnectableUndirected
Strength: -75
Datasections Count: 3
Flags: GeneralDiscoverableMode, ClassicNotSupported
LocalName: 
Uuids: 0000feaa-0000-1000-8000-00805f9b34fb
Data Length: 1 / DataReader: 1
Datasection1: 06
Datasection1: 
Data Length: 2 / DataReader: 2
Datasection2: AA-FE
Datasection2: ??
Data Length: 18 / DataReader: 18
Datasection3: AA-FE-10-EB-03-67-6F-6F-2E-67-6C-2F-79-54-35-56-61-64
Datasection3: ???goo.gl/yT5Vad
Output: goo.gl/yT5Vad

どのエンコーディング/デコーディングを使用する必要がありますか?

4

1 に答える 1