.NET 프레임 워크가 USB 드라이버를 사용하여 관리되는 방법을 제공하지 않는 이유가 궁금합니다. 필자가 읽은 모든 것에서 Windows API를 호출하고 마샬링 (marshalling)과 PInvoke (Parshalling)를 사용하고 .NET 프로그래머 중 누구도 원하지 않는 모든 허튼 소리를 사용해야합니다. .NET은 직렬 포트와 통신하기위한 방법을 제공하지만 USB 포트는 제공하지 않는 이유는 무엇입니까? USB가 이제는 시리얼 포트보다 훨씬 더 많이 사용되고 있으며 프레임 워크에 통합 할 때가 아닌가?.NET 프레임 워크에 USB 도구가 포함되지 않는 이유
답변
.Net 프레임 워크의 다른 모든 기능과 마찬가지로 비용 대비 보상도 낮습니다. .Net의 모든 릴리스와 함께 소유자는 기능에 대해 매우 힘들어하는 결정을 내려야합니다. 단순히 너무 많은 요청이 있고/그들 모두를 만족 시키려고합니다. 선택한 사람들은 합리적인 비용으로 명확한 가치를 제공해야합니다.
내 생각에 직렬 포트는 USB보다 덜 대중적이지만 관리되는 코드로 구현하는 것이 더 쉽습니다. 따라서 비록 사용량이 그다지 높지 않을지라도 상대적으로 구현하기 쉽기 때문에 그것들을 맨 위로 놓을 수 있습니다.
또 다른 요인은 많은 USB 장치가 USB 인터페이스가 아닌 드라이버를 통해 상호 작용할 것을 기대한다는 것입니다. 그런 다음 직렬이보다 실용적인 선택 (즉, 타이밍 중요한 작업, 데이터 수집, 레거시 하드웨어 등) 인 상황이 있습니다. USB는 소비자 세계에서 더 인기가있을 수 있지만 시리얼은 여전히 살아 있고 발길질이다. –
HID 호환 USB 장치와 인터페이스를 사용하려는 경우 CC.USBHID을 살펴보십시오. 오래되고 불쾌하지만 올바른 방향으로 갈 수 있습니다. 더 성숙한 프로젝트가있을 수 있습니다.
USB는 버스입니다. 장치와 통신하는 방법은 버스의 다른쪽에있는 칩에 따라 다릅니다. 모든 기기와 표준화 된 방식으로 대화하는 것은 아닙니다.
USB 장치 제공 업체가 장치를 표준 방식으로 공개하려는 경우 (대부분 클라이언트가 API를 개발, 문서화 및 교육하는 비용을 절약하기위한 표준을 준수 함) 드라이버 프로그래머는 다양한 Windows API (대용량 저장 장치, WIA, DirectShow, 가상 직렬 포트, 블루투스, 휴먼 인터페이스 장치 등)에서 사용할 수있는 장치입니다. 다시 말하면 표준화 된 드라이버는 이미 Windows API에 노출되어 있기 때문에 .Net이 하드웨어와 직접 대화 할 필요가 없습니다.
+1 좋은 정보입니다. – si618
** @ Deleters : **이 질문을 정말로 삭제할 가치가 있습니까? Jared가 제공 한 좋은 대답으로 유효한 기술적 질문입니다. –