Ответ 1
Lego Mindstorms NXT
Мне бы хотелось начать писать управляемый код для внешних устройств и датчиков. Есть ли какие-либо устройства, которые приходят на ум, которые могут быть закодированы против использования .NET? Любые предложения?
Изменить: Главное, что я пытаюсь сделать, это узнать, как работает программирование устройств. Нет лучшего способа сделать это, на мой взгляд, чем попытаться сделать что-то веселое и прохладное.
Lego Mindstorms NXT
Netduino только что вышел, и он использует .NET Micro Framework: → http://www.netduino.com/
Coding4Fun: Blog и Developer Kit
TinyCLR создает несколько разных плат, поддерживающих .NET Framework, наиболее популярным из которых является Фес Домино:
FEZ (Freakin 'Easy!) - это крошечная плата с открытым исходным кодом, работающая под управлением Microsoft.NET Micro Framework. Это означает, что вы можете писать код с гораздо большей эффективностью, используя язык программирования С# под бесплатным Microsoft Visual С# express. Создавайте свои проекты за считанные минуты, подключая FEZ Domino к одному из экранов или к множеству доступных компонентов. Включает USB-кабель.
Многие библиотеки уже включены как файловая система FAT, потоковая передача, USB-клиент, USB-хост, UART, SPI, I2C, GPIO, PWM, ADC, ЦАП и многие другие.
FEZ предлагает множество функций, не найденных в Arduino, BASIC STAMP и других:
- На основе Microsoft.NET Framework.
- Работает на 72Mhz процессорах NXP ARM.
- Поддержка отладки времени выполнения (контрольные точки, проверка переменных, степпинг и т.д.).
- Используйте Visual С# 2010 Express Edition для разработки.
- Расширенные возможности, такие как FAT, USB-устройство и USB-хост.
- Легко обновляется до аппаратного обеспечения, такого как EMX.
- Файлы дизайна аппаратного обеспечения с открытым исходным кодом.
- Используйте существующие щиты и держатели.
- На основе чипсета USBizi (идеально подходит для коммерческого использования).
- FEZ Mini BS2, совместимый с дополнительные входы/выходы.
- FEZ Domino Arduino pin-out совместим с дополнительными вводами/выводами.
Два продукта, которые упрощают взаимодействие с внешними устройствами, Phidgets и Serializer. Phidgets поставляется с простым .NET API и включает в себя множество аппаратных и программных датчиков и контроллеров. Для многих интересных проектов Phidgets и .NET-приложений в целом, посмотрите Блог Coding4Fun.
Сериализатор, с другой стороны, ориентирован на робототехнику, но также имеет отличный .NET API. Для демонстрации Сериализатора есть замечательная статья в Журнал Robot Magazine Issue 19 от Clint Rutkas (один из людей, ответственных за Coding4Fun).
TinyCLR, с другой стороны, предоставляет три различных устройства в своей серии FEZ (Freakin 'Easy), которые могут быть запрограммированы с использованием платформу .NET и работать независимо от ПК для взаимодействия с датчиками и устройствами.
Вы должны посмотреть на Arduino или какой-нибудь вариант - он может взаимодействовать с USB-портом, а сам контроллер запрограммирован на языке C-стиля.
Затем вы можете взаимодействовать (в основном) с любым датчиком/устройством/инструментом, который вы хотите, и вы можете писать код на любом языке, который может взаимодействовать с USB.
Существует много API внутренней автоматизации для .Net.
Microsoft.NET Micro Framework → http://www.microsoft.com/netmf/default.mspx
Мне было очень весело программировать с OCZ NIA. По сути, ЭЭГ позволяет использовать биологическую обратную связь в вашем программном обеспечении. Я написал код, который переводит ваши альфа-и бета-волны в MIDI и DMX для синтезатора и управления освещением. Возможности, хотя и бесконечны.
Он использует USB HID, который использует многие устройства, поэтому это было хорошее введение. В http://code.google.com/p/nia-brew/ имеется несколько кодов кода, и вы найдете форумы OCZ NIA очень полезными при запуске.
Список будет огромным, я не вижу причин, по которым устройство не могло контролироваться .NET. В последнем случае решение, использующее DllImport и прямые вызовы IoControl для драйверов устройств, (предполагается, что вы знаете интерфейсы) работают хорошо.
Я еще не пробовал этого, но я хотел бы сделать еще некоторое аппаратное программирование, и я думаю об использовании Tinkerforge.
Краткое введение с страницы Википедии (выделение мной):
Tinkerforge - это платформа штабелируемых блоков микроконтроллеров (Bricks), которые могут управлять различными модулями (Bricklets). первичный коммуникационный интерфейс строительных блоков может быть расширен используя мастер-расширения. Аппаратное обеспечение может управляться внешним программы, написанные на C, С++, С#, Object Pascal, Java, PHP, Python, Ruby и VB.NET через соединение USB или Wifi и работает в Windows, Linux и Mac OS X. Этот подход, не встроенный в программирование, устраняет типичные требования и ограничения (средства разработки, ограниченные доступность ОЗУ и вычислительной мощности) обычных встроенных разработка программного обеспечения (cdr Arduino). Оборудование и программное обеспечение Tinkerforge оба являются Open Source, а все файлы размещены на GitHub.
Насколько я понимаю, это более высокий уровень, чем, допустим, Arduino.
Я могу, вероятно, узнать больше о фактическом аппаратном программировании от использования Arduino, но мне не нужны/нужны глубокие знания о аппаратном программировании на низком уровне - я просто хочу создать что-то классное с аппаратным обеспечением.
Уже есть еще один ответ, в котором упоминается USB-пусковая установка USB... однако связанный с ним код старше шести лет, и я не мог заставить его работать с моя модель.
Итак, я написал свою собственную библиотеку (в .NET 4.0): MissileSharp
Для всех, кого интересует, полный исходный код здесь.
Это была моя первая попытка написать код для аппаратного устройства.
В целях обучения я рассмотрел код проект, связанный в другом ответе, и в коде "официального" программного обеспечения управления, которое вы можете загрузить с сайта (прямая ссылка - исходный код не доступен напрямую, но программное обеспечение написано на .NET, поэтому вы можете посмотреть код с помощью Reflector, ILSpy или аналогичного инструмента). < ш > Я использовал HidLibrary для отправки фактических команд на устройство.
Ардуино - один из лучших, я думаю.
Я знаю, что вы сказали .Net, но Arduino - забавное устройство, с которым можно поиграть. http://www.arduino.cc/