(Dis) Kết nối thiết bị bluetooth với Windows.Devices.Bl Bluetooth.Rfcomm (WP8.1)


82

Kết nối và ngắt kết nối với các thiết bị Bluetooth đã mang lại nhiều kết quả khác nhau trên Windows Phone / Desktop 8.1. Tôi đã sử dụngWindows.Devices.Bluetooth.Rfcomm không gian tên và tôi đã cố gắng kết nối một số thiết bị với các phiên bản / lớp Bluetooth khác nhau.

  • Phiên bản 1.2 (Lớp 1 và 2)
  • Phiên bản 2.0 (Lớp 1 và 2)
  • Phiên bản 2.1 (Lớp 1 và 2)
  • Đã thử nghiệm trên Nokia Lumia 625 và Lumia 635, Dell Latitude E6500 và Dell Precision M6400.

Bất cứ khi nào tôi cố gắng kết nối với một trong hai thiết bị 2.0 hoặc 2.1 đều có vấn đề. Lần đầu tiên tôi cố gắng kết nối với từng thiết bị, mọi thứ sẽ diễn ra tốt đẹp và kết nối sẽ mở. Sau đó, khi tôi đóng kết nối và kết nối lại thiết bị, sự cố bắt đầu. Trong quá trình kết nối lại, kết nối sẽ không bao giờ mở và trình gỡ lỗi sẽ ném ra một Hệ thống.

> Message: No further data is available.

Ngoài ra, khi kết nối không thành công, các thiết bị Windows 8.1 sẽ tiếp tục cố gắng (không thành công) tự kết nối với Thiết bị Bluetooth, ngay cả khi ứng dụng của riêng tôi bị chấm dứt. Đôi khi thiết bị Windows 8.1 cũng sẽ hiển thị thiết bị Bluetooth là đã kết nối, trong khi thiết bị này hiển thị trực quan rằng thiết bị không được kết nối nữa. Cách duy nhất để kết nối lại thiết bị Bluetooth là hủy ghép nối thiết bị và tắt / khởi động lại Bluetooth trên thiết bị Windows.

Bất cứ khi nào tôi cố gắng thực hiện cuộc gọi mới DeviceInformationsau khi kết nối không thành công, nó sẽ từ chối trả lại thiết bị mà tôi đã cố kết nối trước đó.

> Message: The service cannot be found in the specified name space.

Kết quả kỳ lạ, 1,2 thiết bị hoạt động hoàn hảo.

Tệp kê khai:

<m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
  </m2:Device>
</m2:DeviceCapability>

Chọn thiết bị:

Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));

Đang kết nối: (id = chatserviceid)

StreamSocket _socket;    
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);

Đang ngắt kết nối:

this._socket.Dispose();
this._socket = null;

Tôi đã nghiên cứu MSDN, các mẫu mã, bản demo, video channel-9 và StackOverflow, không tài nguyên nào có thể cho tôi biết nếu có vấn đề với Windows.Devices.Bluetooth.Rfcomm.

Có ai đó nhận ra những kết quả kỳ quặc này không? Tôi có làm điều gì sai?

CẬP NHẬT: Làm việc với Windows Phone 8.1 GDR2 là một giải pháp khả thi.

LƯU Ý: Đối với tôi và một số người khác, bản cập nhật này vẫn đưa ra các vấn đề tương tự.


2
Xin chào gl77 - Tôi đang giải quyết vấn đề này trên tài khoản MSDN của bạn. Tôi đã cập nhật chủ đề và sẽ cập nhật cho bạn khi tôi biết thêm.
Matt Small

Bạn đã tìm ra giải pháp cho việc này chưa? Tôi đang gặp sự cố tương tự trong đó nó hoạt động trên một thiết bị nhưng không hoạt động trên thiết bị khác. Một lưu ý là thiết bị hoạt động chạy trình điều khiển Bluetooth của Intel: 17.0.1401.422 trong khi thiết bị không hoạt động chạy trình điều khiển Bluetooth của Intel: 17.0.1405.460.
Jon H

Tôi vẫn chưa tìm ra giải pháp, nhóm của Matt vẫn đang nghiên cứu vấn đề này. Hãy hy vọng về một bản sửa lỗi trong tương lai gần.
ggg

2
Nhà sản xuất phần cứng đã hướng dẫn tôi cách gỡ bỏ phiên bản 17.0.1405.460 của trình điều khiển Bluetooth Intel và cài đặt phiên bản 17.0.1401.422 cũ hơn. Sau khi chúng tôi làm điều đó, ứng dụng của tôi bắt đầu hoạt động trở lại. Vì vậy, vấn đề, đối với tôi, là các trình điều khiển mới hơn.
Jon H

1
Bạn có thể đính kèm liên kết đến bài đăng MSDN không?
SILENT

Câu trả lời:


1

Tôi sẽ thử CoolTerm và xem điều đó có phù hợp với bạn không. Tôi đã gặp sự cố tương tự khi kết nối loa với chip Sigma DSP bên trong qua kết nối USB, vì vậy nếu bạn gặp sự cố khi nhìn thấy các thiết bị bên ngoài, có thể thiết bị đó không tương thích với máy tính của bạn. Tải xuống CoolTerm và đi đến tùy chọn và trong Cổng nối tiếp, bạn nên thay đổi Cổng của mình thành kết nối mong muốn (bluetooth, usb, v.v.) Sau đó chỉnh sửa các tùy chọn nếu cần và đi đến cửa sổ chính và nhấn kết nối và xem nó có phù hợp với bạn không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.