Как в Arduino создавать программы для Windows
- Войдите на сайт для отправки комментариев
Хочу сделать специальную программу для Windows, которая будет "проигрывать" прошивку для микроконтроллера, только вместо всяких регистров, АЦП, таймеров у него будет специальный интерфейс для вызова функций Windows.
Это будет похоже на виртуальную плату Arduino с дисплеем в виде окна программы, с возможностью считывать координаты мышки и нажатие клавиш, записывать файлы и работать с COM-портом. Можно будет написать программу для железки и для Windows в привычной IDE и на си. Разумеется, это не для полноценных программ, а скорее для отладочных, рабочих, которые можно сделать на скорую руку.
Также я придумал такую функцию: эта программа мониторит COM-порт. Вы подключаете своё устройство и оно через порт передаёт специальную прошивочку, которая запускается на Windows. И у вас есть уже хоть и примитивный, но графический интерфейс. Радость тут в том, что программа одна, универсальная, а вся логика у вас в микроконтроллере или в какой-то внешней EEPROM, причём в сжатом виде. Эдакий терминал для COM-порта со встроенной виртуальной машиной на ядре AVR.
Конечно, есть Processing, но мне интересно как вам идея, которую я описал? Стоит браться за неё?
крута.
Не "Умный шлём", конечно, но близко. ))))
avr-java?
Я чего-то не понимаю, или человек пытается изобрести Proteus для отладки прошивок без Proteus?
нет тут java нигде. Обычный WinAPI32
Хочу сделать специальную программу для Windows, которая будет "проигрывать" прошивку для микроконтроллера, только вместо всяких регистров, АЦП, таймеров у него будет специальный интерфейс для вызова функций Windows.
Эта часть понятна, это proteus или любой другой эмулятор.
Это будет похоже на виртуальную плату Arduino с дисплеем в виде окна программы, с возможностью считывать координаты мышки и нажатие клавиш, записывать файлы и работать с COM-портом. Можно будет написать программу для железки и для Windows в привычной IDE и на си. Разумеется, это не для полноценных программ, а скорее для отладочных, рабочих, которые можно сделать на скорую руку.
Не очень понятна суть идеи. И так можно написать программу для железки и для windows в привычной ide на си - visual studio. Или типа пишем в arduino ide с вайрингом, выбираем нашу виртуальную плату - эмулятор, "прошиваем", и... и что? а, например, i2c датчики куда совать, в флоппи дисковод или в cd-rom?
Также я придумал такую функцию: эта программа мониторит COM-порт. Вы подключаете своё устройство и оно через порт передаёт специальную прошивочку, которая запускается на Windows. И у вас есть уже хоть и примитивный, но графический интерфейс. Радость тут в том, что программа одна, универсальная, а вся логика у вас в микроконтроллере или в какой-то внешней EEPROM, причём в сжатом виде. Эдакий терминал для COM-порта со встроенной виртуальной машиной на ядре AVR.
Хм, это как картриджи в денди вставлялись, только тут в ПК будут вставляться ардуины? И ещё и передавать винде на выполнение какой-то добавочный ELF, не свою прошивку, а файл с ещё одной прошивкой? Ой вэй...
Не очень понятна суть идеи. И так можно написать программу для железки и для windows в привычной ide на си - visual studio. Или типа пишем в arduino ide с вайрингом, выбираем нашу виртуальную плату - эмулятор, "прошиваем", и... и что? а, например, i2c датчики куда совать, в флоппи дисковод или в cd-rom?
короче, проще сделать и показать, чем объяснить. Мне главное, чтобы кто-нибудь затестил на своей винде. А может это и под Wine в Linux заработает. Я документик сделаю с описанием.
короче, проще сделать и показать, чем объяснить. Мне главное, чтобы кто-нибудь затестил на своей винде. А может это и под Wine в Linux заработает. Я документик сделаю с описанием.
дерзайте...
Да нет, сперва обычно объясняют, цель и средства, хотя бы себе, потом другим. Пока не получилось.
Я, кажется, понял, во втором абзаце - вы хотите сделать клон processing, и разработать некий протокол обмена между ардуиной и вашим клоном, и, типа, когда пишете программу для ардуины, можно прямиком в ней будет написать типа pc_file_open(), pc_file_write(), get_mouse_coords(x,y), call_winapi( function, params ), ну и всё такое в этом духе? Но тогда как это соотносится с первым абзацем, про эмуляцию?
Это, насчёт com-порта. Пока ардуина не воткнута, никакого порта нет. Воткнули что-то - порт появился, ваша программа его оккупирует и начинает ждать оттуда мини-прошивку (или поток команд для клона процессинга) - а на самом-то деле это блин я модем воткнул, и не хотел бы, чтобы ваше поделие захватило порт.
Я, кажется, понял, во втором абзаце - вы хотите сделать клон processing, и разработать некий протокол обмена между ардуиной и вашим клоном, и, типа, когда пишете программу для ардуины, можно прямиком в ней будет написать типа pc_file_open(), pc_file_write(), get_mouse_coords(x,y), call_winapi( function, params ), ну и всё такое в этом духе? Но тогда как это соотносится с первым абзацем, про эмуляцию?
Примерно так. Это виртуальная машина, в качестве байт-кода выступает код для AVR-микроконтроллера. То есть программа пишется для AVR, но вместо драйверов для портов, АЦП и другой периферии будет драйвер вызова API Windows. Бред, конечно, но уже всё продумано до мелочей.
Это, насчёт com-порта. Пока ардуина не воткнута, никакого порта нет. Воткнули что-то - порт появился, ваша программа его оккупирует и начинает ждать оттуда мини-прошивку (или поток команд для клона процессинга) - а на самом-то деле это блин я модем воткнул, и не хотел бы, чтобы ваше поделие захватило порт.
Ну тут же настройки можно сделать. На самом деле винда обычно под каждое устройство старается выделять свой номер порта от 2 до 255. Да и программа может просто подключиться, сделать запросик в порт, не получит нужный ответ и закроет порт. Тут я не так детально продумывал, может автоматически и не стоит подключаться, а только по кнопке внутри программы.
дерзайте...
А вы потестируете?:)
O_O
А кто ж её, такую программу, скомпилирует??? avr-gcc с вайрингом знает всё про порты и ацп, но не знает ничего про winapi?
PS люди даже банк-клиенты не запускают на своей винде, всё в виртуалке. Можете тоже смело тестировать у себя на виртуалках.
Придется дополнительно писать компилятор, который будет знать всё про АЦП в Windows.
Вообще то большая часть идеи - дизассемблер avr.
Он хочет, чтобы в железке находился windows-интефейс для управления этой железкой. Что сложно и не нужно.
И потом листинг парсить и выполнять, подменяя кое-что на своё? Проще уж сразу elf загружать и исполнять на vcpu. Только, думается мне, ТС хочет не совсем этого.
Согласен. И эмуляция тут тоже не нужна.
Впрочем, он по ходу уже пишет, скоро посмотрим. Или не скоро. :)
Впрочем, он по ходу уже пишет, скоро посмотрим. Или не скоро. :)
Да, на самом деле бета версия уже готова. Просто интересно, поймёт ли кто идею, но походу я придумал очень специфичный велосипед. Скоро доделаю страницу для этого проекта и выложу.
как всегда интересные люди, в понедельник у него вопрос "Стоит браться за неё?", во вторник "Да, на самом деле бета версия уже готова".
ну да, ждем-с.
сегодня, в среду, она уже потестирована и взорвалась, засыпав ТС ошмётками байт
сегодня, в среду, она уже потестирована и взорвалась, засыпав ТС ошмётками байт
Что такое ТС? Всё нормально, просто нудятины очень много с документацией.
Пёс с ней, документацией, всё равно никто читать её не будет первые полгода.
как всегда интересные люди, в понедельник у него вопрос "Стоит браться за неё?", во вторник "Да, на самом деле бета версия уже готова".
ну да, ждем-с.
А шо там писать ту бетаверсию?! Меню главное набросал, открыть-сохранить-о программе. Последний пункт важно верно заполнить, автора не забыть. А некоторая часть второстепенного функционала в бете может временно отсутствовать.
Это называется не бета-версия :) и даже не пре-альфа.
Всё готово в новой теме: http://arduino.ru/forum/otvlechennye-temy/nanonyam-%E2%80%94-nyamka-dlya-lyubitelei-avr-mikrokontrollerov