0
我想分析一個藍牙低功耗廣告中包含的數據,這是我的代碼到目前爲止。我找不到如何從IBuffer中提取數據,最好是字節數組。如果有更好的方法來提取數據,或者任何人知道如何將IBuffer轉換爲字節數組,那麼您的幫助將不勝感激。提取藍牙低功耗廣告數據在c + +
此外,我沒有辦法檢查我的代碼到目前爲止是否正確,所以如果有任何錯誤,請隨時讓我知道。
我想分析一個藍牙低功耗廣告中包含的數據,這是我的代碼到目前爲止。我找不到如何從IBuffer中提取數據,最好是字節數組。如果有更好的方法來提取數據,或者任何人知道如何將IBuffer轉換爲字節數組,那麼您的幫助將不勝感激。提取藍牙低功耗廣告數據在c + +
此外,我沒有辦法檢查我的代碼到目前爲止是否正確,所以如果有任何錯誤,請隨時讓我知道。
我找到了答案。大多數情況下,這只是一堆comptrs,其他人用來轉換緩衝區的額外投射在這裏是不必要的,因爲緩衝區已經是一個comptr對象。
HRESULT BLEWatcher::OnAdvertisementReceived(IBluetoothLEAdvertisementWatcher* watcher, IBluetoothLEAdvertisementReceivedEventArgs* args)
{
ComPtr<IBluetoothLEAdvertisement> advertisement;
args->get_Advertisement(&advertisement);
ComPtr<__FIVector_1_Windows__CDevices__CBluetooth__CAdvertisement__CBluetoothLEAdvertisementDataSection> dataSections;
advertisement->get_DataSections(&dataSections);
ComPtr<IBluetoothLEAdvertisementDataSection> dataSection;
//Get appropriate data section
dataSections->GetAt(2, &dataSection);
ComPtr<IBuffer> buffer;
dataSection->get_Data(&buffer);
ComPtr<IBufferByteAccess> bufferByteAccess;
buffer.As(&bufferByteAccess);
byte* bytes = nullptr;
bufferByteAccess->Buffer(&bytes);
//Handle bytes here
return S_OK;
}
這有助於:https://stackoverflow.com/questions/11853838/getting-an-array-of-bytes-out-of-windowsstoragestreamsibuffer –