這幾天在練習使用 windows-rs,寫了一個讓 Windows 10 廣播 iBeacon 訊號的小程式。
完整的程式碼:https://github.com/riddleling/beacon-publisher-on-windows
這個程式很簡單, 使用 UWP API 的 BluetoothLEAdvertisementPublisher 發布 iBeacon 廣告:
let manufacturer_data = BluetoothLEManufacturerData::new()?;
// 設定 iBeacon 的 Manufacturer Data:
manufacturer_data.SetCompanyId(0x004C)?; // Company ID
let data:[u8; 23] = [
// Type:
0x02,
// Data Length:
0x15,
// Proximity UUID:
0xE3, 0x0A, 0xC8, 0xFE,
0x75, 0xB8, 0x47, 0x21,
0x4B, 0x5D, 0x56, 0xB7,
0x07, 0x64, 0x25, 0xA9,
// Major:
0x00, 0x02,
// Minor:
0x00, 0x03,
// TX Power:
0xC8
];
let writer = DataWriter::new()?;
writer.WriteBytes(&data)?;
let buffer = writer.DetachBuffer()?;
manufacturer_data.SetData(buffer)?;
let publisher = BluetoothLEAdvertisementPublisher::new()?;
// 把 Manufacturer Data 加入 publisher:
publisher.Advertisement()?.ManufacturerData()?.Append(manufacturer_data)?;
// 開始廣播:
publisher.Start()?;
停止廣播:
publisher.Stop()?;