2010-03-26 41 views
6

Để nhận tất cả các cổng nối tiếp khả dụng từ hệ thống, tôi sử dụng lệnh sau.Nhận tên cổng nối tiếp sai từ bluetoothdevice (C#)

SerialPort.GetPortNames 

Nó hoạt động tốt cho cổng nối tiếp bo mạch chủ, nhưng với thiết bị bluetooth, tôi nhận sai tên cổng.

Ví dụ: Thay vì COM7 tôi nhận được đôi khi COM70 hoặc COM7ö. Nó luôn luôn là 1 lá thư đến nhiều.

bất kỳ đề xuất nào?

PS: Tôi đang sử dụng Visual Studio Express mới nhất trong Windows 7 PPS: Lỗi bẩn để cắt chữ cái cuối cùng không hoạt động vì tôi không biết cái nào là cổng nối tiếp bluetooth (với các thiết bị hoặc phím điều khiển khác nhau nó thay đổi số lượng các comport) và sau khi thử các gậy khác nhau tôi đã đạt COM10, ergo COM100 hoặc COM10f

EDIT: mã tôi đang sử dụng ngay bây giờ. đọc sách, nhưng vẫn còn cùng một vấn đề.

RegistryKey myRegistry = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); 
foreach (string valuename in myRegistry.GetValueNames()) 
{ 
    if (myRegistry.GetValue(valuename) is String) 
    { 
     if (valuename.Contains("BthModem")) 
     { 
      richTextBox1.AppendText(">" + myRegistry.GetValue(valuename) + "<" + Environment.NewLine); 
     } 
    } 
} 

Thông thường yêu cầu thứ hai hoặc thứ ba đang làm việc với một kết quả như

COM11ᯋ < COM10S < COM11 < COM10 < COM11 < COM10 <

h ow có thể được?

Trả lời

0

Bạn có thể sử dụng WMI để truy vấn hệ thống cho các cổng nối tiếp, bao gồm cả các cổng được thêm bởi thiết bị bluetooth và thiết bị USB-To-Serial. Có lẽ cách đó bạn sẽ không gặp phải vấn đề này. Xem tại CodeProject.

+0

không hoạt động trên môi trường của tôi. Không tìm thấy System.Managment. Có lẽ nó không phải là một phần của phiên bản thể hiện ?? – wurlog

2

này đã được reported as a bug với phi null chấm dứt chuỗi:

Bạn có thể tự đi bộ registry?

HKLM\Hardware\DeviceMap\SerialComm 
+0

Tôi nhận được các giá trị từ sổ đăng ký, nhưng thậm chí chỉ có trên Comport kết nối qua bluetooth đăng ký đang hiển thị 2 Comports. Bạn có bất kỳ ý tưởng tại sao điều đó xảy ra không? – wurlog

+0

Vẫn cùng một vấn đề: (nhưng thường là lần thử thứ 3 là câu trả lời đúng. Cách này có thể là gì? – wurlog

0

Tôi gặp vấn đề tương tự. SerialPort.GetPortNames về cơ bản sử dụng registry anyway - cả hai phương pháp này dường như không hoạt động với bluetooth.

Giải pháp thay thế mà tôi hiện đang sử dụng là lặp qua các cổng X com đầu tiên và xem chúng có tồn tại hay không, điều này hầu như không thanh lịch. MS: FAIL.

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