Почему.NET Framework не включает в себя инструменты USB
Мне интересно, почему.NET Framework не предоставляет никаких управляемых методов для работы с драйверами USB. Из всего, что я прочитал, вы все равно должны обращаться к Windows API и использовать маршаллинг, PInvoke и все это дерьмо, которое никто из нас.NET-программистов не хочет делать. Почему.NET предоставляет методы для связи с последовательными портами, но не с портами USB? USB стал намного шире использоваться, чем последовательные порты, не пора ли им включить его в Framework?
3 ответа
Как и все другие функции в.Net Framework, все сводится к стоимости и вознаграждению. С каждым выпуском.Net владельцы должны принимать очень болезненные решения для функций. Просто слишком много запросов / желаний, чтобы удовлетворить их все. Те, которые выбраны, должны предоставить ясную стоимость по разумной цене.
Я предполагаю, что последовательные порты, хотя, вероятно, и менее популярны, чем USB, просто проще реализовать в управляемом коде. Следовательно, даже при том, что использование может быть не столь высоким, относительная легкость их реализации ставит их выше.
USB это просто шина. Способ связи с устройством зависит от микросхемы на другой стороне шины. Не существует стандартного способа общения со всеми устройствами.
Если поставщик USB-устройств хочет предоставить устройство стандартным способом (большинство из них соответствуют стандартам для экономии затрат на разработку, документирование и информирование клиентов об их API), их программисты драйверов могут написать драйверы, которые делают устройство доступным для различные интерфейсы Windows API (большое хранилище, WIA, DirectShow, виртуальный последовательный порт, Bluetooth, Human Interface Device и т. д.). Опять же, поскольку стандартизированные драйверы уже доступны для Windows API, нет необходимости в.Net для непосредственного взаимодействия с оборудованием.
Если вы ищете интерфейс с HID-совместимым USB-устройством, вы можете взглянуть на CC.USBHID. Это старый и неприятный, но может привести вас в правильном направлении. Там могут быть более зрелые проекты доступны.