2016-06-20 40 views
5

Tôi có ứng dụng UWP có cửa sổ 10 có thể ghép nối với thiết bị Bluetooth LE theo lập trình. Sau khi ghép nối thành công, kết nối với thiết bị cũng được thiết lập.Cách kết nối theo chương trình với thiết bị Bluetooth đã ghép nối khi kết nối bị mất trong Windows 10 UWP

Nếu tại một số thời điểm, thiết bị bị ngắt kết nối, tôi không thể đọc bất kỳ GattCharacteristics nào từ thiết bị LE. Tôi có thể kiểm tra xem kết nối có hiện diện hay không nhưng tôi không thể thiết lập lại kết nối.

DeviceInformation deviceInfo = await DeviceInformation.CreateFromIdAsync("deviceId", "additionalProperties", "DeviceInformationKind"); 

if(deviceInfo.ConnectionStatus != BluetoothConnectionStatus.Connected) { // re-establish the connection } 

Cảm ơn.

Trả lời

7

Vấn đề

Thiết bị Bluetooth LE không lưu trữ các thông tin liên kết được tạo ra trong quá trình ghép nối. Thông tin liên kết cho phép hai thiết bị được ghép nối trước đó để khởi tạo các kết nối mới nếu chúng bị ngắt kết nối.

Windows 10 Giải pháp

Sử dụng in-app pairing APIs, bạn có thể lập trình cho hệ thống để ghép nối với thiết bị Bluetooth LE (có vẻ như bạn đã làm điều này). Để khắc phục sự cố liên kết được mô tả ở trên, số DevicePairingProtectionLevel phải được đặt thành None. Vì vậy, mã ghép nối trong ứng dụng của bạn có thể trông giống như:

var result = await someDevice.Pairing.PairAsync(DevicePairingProtectionLevel.None); 

Thiết lập DevicePairingProtectionLevel-None kể hệ thống để bỏ qua thông tin liên kết và chỉ tìm kiếm một thiết bị phù hợp.

Giải pháp ngoại vi

Ngoài ra, nếu bạn có quyền truy cập vào firmware của thiết bị ngoại vi, bạn có thể thiết lập nó để ghi nhớ thông tin liên kết. Sau đó, các cuộc gọi ghép nối hiện tại của bạn trên Windows 10 sẽ hoạt động.

+0

+1 Cảm ơn bạn đã giải thích. Thiết lập DevicePairingProtectionLevel thành None dường như không giúp đỡ trong việc truy cập dữ liệu. Mặc dù tôi đã nhận thấy tại một số điểm kết nối dường như đi tắt. Tôi đang thử nghiệm để kiểm tra tính nhất quán. Rất tiếc, tôi không có quyền truy cập vào phần mềm của thiết bị ngoại vi, vì vậy tôi sẽ tiến hành giải pháp Windows 10 mà bạn đã giải thích ở trên. Cảm ơn! –

+0

Tôi cũng không thể thiết lập lại kết nối trong chương trình của mình. Nó hoạt động tốt sau khi paring ban đầu, nhưng sau đó nó không bao giờ kết nối lại. Tôi không sử dụng ghép nối trong ứng dụng, nhưng như một bài kiểm tra, tôi đã sửa đổi mã Windows Universal Samples Scenario8_PairDevice.xaml.cs để sử dụng DevicePairingProtectionLevel.None. Tôi đã ghép nối thiết bị của mình bằng mã mẫu đã sửa đổi. Quay trở lại chương trình của tôi, tôi vẫn không thể thiết lập lại kết nối sau đó. Đây có phải là DevicePairingProtectionLevel.None được lưu trên toàn cầu để bất kỳ chương trình nào sau này có thể thiết lập lại kết nối không? – JFar

+0

@JFar Tôi không chắc cách cập nhật Windows 10 Creative thay đổi như thế nào (tôi mong đợi có một số bản cập nhật BT trong đó), nhưng tôi nghĩ rằng 'DevicePairingProtectionLevel.None' là toàn cầu. Có thể là thiết bị ngoại vi mà bạn đang cố gắng kết nối lại không được quảng cáo là có thể kết nối được - bạn có thể xem nó với một thiết bị khác không? – Carter

Các vấn đề liên quan