2011-12-29 29 views
5

Trong ứng dụng C#, một số cách hay để phát hiện sự hiện diện của một số thiết bị được kết nối với máy tính là gì? Dĩ nhiên, theo chương trình. Tôi cần phải hỗ trợ Windows XP và 7.Cách phát hiện sự hiện diện của một số thiết bị nhất định

nền

Tôi đã được đưa ra một ứng dụng C# khổng lồ có sử dụng một số thiết bị được kết nối. Các thiết bị này là phần cứng tùy chỉnh và không được thiết kế để sử dụng mà không cần phần mềm. Khi ứng dụng C# khởi động, ứng dụng sẽ tìm kiếm các thiết bị được kết nối đó và liên lạc với chúng khi thích hợp. Có thể có nhiều thiết bị được kết nối. Tôi đã không nhìn vào mã nguồn tìm kiếm các thiết bị. Các thiết bị được cắm vào máy tính bằng cáp USB hoặc cáp nối tiếp. Chúng xuất hiện dưới dạng cổng COM trong trình quản lý thiết bị. Đôi khi có thể có USB hub hoặc serial để chuyển đổi USB ở giữa PC và thiết bị.

Khi thiết bị được kết nối với một số cổng USB nhất định hoặc một số bộ chuyển đổi nối tiếp sang USB được sử dụng, đôi khi phần mềm không thể phát hiện thiết bị đúng cách. Đôi khi nó thay đổi từ PC sang PC. Chúng tôi không chắc chắn nếu nó gây ra cho một số trình điều khiển.

Tôi được yêu cầu xem xét thuật toán tìm kiếm thiết bị và nếu có thể, hãy tìm ra giải pháp tốt hơn và thay thế triển khai hiện tại. Tôi đã không thực hiện loại nhiệm vụ này trước đây và tôi cần phải tìm hiểu cách Windows quản lý các thiết bị dưới mui xe.

Tôi làm cách nào để tìm kiếm các thiết bị được kết nối cụ thể trong C#? Một số thực hành tốt và những gì tôi nên nhận thức hoặc tránh?

+0

Có lẽ bài viết này là interresting: http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net và http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

Bạn có thể liệt kê tất cả các thiết bị được kết nối (usb) bằng WMI hoặc các thiết bị như vậy. Họ khá chậm để làm việc với xa như tôi có thể nhớ. Có thể có những cách tốt hơn mặc dù. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

Trả lời

3

Bạn có thể tìm thấy tất cả các thiết bị trong registry: HKLM/CurrentControlSet/Enum (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

Nhưng sẽ có vấn đề với cổng nối tiếp. Bạn không thể chắc chắn thiết bị nào được kết nối với cổng nối tiếp. Nó có thể là điện thoại di động, modem, chuột, thiết bị của bạn, một thiết bị tùy chỉnh khác, v.v. Để đảm bảo rằng thiết bị của bạn được kết nối với một cổng nối tiếp cụ thể, bạn phải cố gắng liên lạc với nó. Và nếu nó đáp ứng đúng cách - thì có, đó là thiết bị của bạn.

Vì nhiều chương trình hoạt động với thiết bị nối tiếp này yêu cầu người dùng chọn cổng nối tiếp theo cách thủ công, nơi thiết bị được kết nối.

UPD:

Một liên kết về liệt kê các cổng nối tiếp: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

liên kết bạn cung cấp là dành cho windows CE. bạn có thể cung cấp liên kết cho windows xp/7 không? cảm ơn. tôi không thể tìm thấy nó trong msdn bằng cách tìm kiếm nhanh. – Donotalo

+0

Rất tiếc, xin lỗi. Đã sửa bài viết. Bây giờ nó trỏ đến bài viết thích hợp. – werewindle

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