2011-12-29 3 views
5

C# 응용 프로그램에서 컴퓨터에 연결된 특정 장치의 존재를 감지하는 좋은 방법은 무엇입니까? 프로그래밍 방식으로, 물론. 나는 Windows XP를 지원하고 좀 연결된 장치를 사용하는 거대한 C# 응용 프로그램을 제공했습니다특정 장치의 존재를 감지하는 방법

7

배경해야합니다. 장치는 사용자 지정 하드웨어이며 소프트웨어없이 사용할 수 있도록 설계되지 않았습니다. C# 응용 프로그램이 시작되면 연결된 장치를 검색하고 적절할 때 해당 장치와 통신합니다. 하나 이상의 연결된 장치가있을 수 있습니다. 나는 장치를 검색하는 소스 코드를 조사하지 않았다. 장치는 USB 또는 직렬 케이블을 사용하여 PC에 연결됩니다. 장치 관리자에서 COM 포트로 나타납니다. 때로는 PC와 장치 사이에 USB 허브 또는 직렬 대 USB 변환기가있을 수 있습니다.

장치가 특정 USB 허브에 연결되어 있거나 특정 직렬/USB 변환기가 사용되는 경우 소프트웨어가 장치를 제대로 감지하지 못할 때가 있습니다. 때로는 PC마다 다릅니다. 일부 운전자가 원인인지 확실하지 않습니다.

나는 장치 검색 알고리즘을 살펴보고 가능한 경우 더 나은 솔루션을 제시하고 현재 구현을 대체해야한다고 말합니다. 이전에 이런 종류의 작업을 수행하지 않았으므로 Windows에서 장치를 관리하는 방법을 알아야합니다.

C#에서 특정 연결된 장치를 검색하려면 어떻게해야합니까? 좋은 습관이란 무엇이며, 내가 알고 있어야하거나 피하는 것이 무엇입니까?

+0

어쩌면이 문서가 인터 휴식된다 http://stackoverflow.com/questions/68749/working-with-usb-devices-in-net http://www.developerfusion.com/article/84338/making-usb-c-friendly/ – Ruben

+0

WMI 등을 사용하여 연결된 모든 (usb) 장치를 열거 할 수 있습니다. 그들은 내가 기억할 수있는 한 일하는 것이 꽤 느립니다. 그래도 더 나은 방법이있을 수 있습니다. http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices – CodingBarfield

답변

3

당신은 레지스트리에있는 모든 장치를 찾을 수 있습니다 : HKLM/CURRENTCONTROLSET/열거 (http://msdn.microsoft.com/en-us/library/windows/hardware/ff546173(v=vs.85).aspx)

을하지만 직렬 포트에 문제가있을 수 있습니다. 어떤 장치가 직렬 포트에 연결되어 있는지 확신 할 수 없습니다. 휴대 전화, 모뎀, 마우스, 장치, 다른 맞춤 장치 등이 될 수 있습니다. 제공된 직렬 포트에 연결된 장치인지 확인하려면 해당 장치와 통신을 시도해야합니다. 그리고 그것이 적절한 방법으로 응답한다면 - 그렇습니다, 그것은 당신의 장치입니다.

이 때문에 직렬 장치에서 작동하는 많은 프로그램은 장치가 연결된 직렬 포트를 수동으로 선택하도록 사용자에게 요청합니다.

UPD :

열거 직렬 포트에 대한 또 다른 링크 : http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/afb62e84-53e5-4f17-ba91-8de15c4c2e38/

+0

제공된 링크는 Windows CE 용입니다. 당신은 Windows XP/7에 대한 링크를 제공 할 수 있습니까? 감사. 빠른 검색을 통해 msdn에서 찾을 수 없습니다. – Donotalo

+0

죄송합니다. 고정 된 기사. 이제는 적절한 기사를 가리 킵니다. – werewindle

관련 문제