Как в Arduino создавать программы для Windows

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

Хочу сделать специальную программу для Windows, которая будет "проигрывать" прошивку для микроконтроллера, только вместо всяких регистров, АЦП, таймеров у него будет специальный интерфейс для вызова функций Windows.

Это будет похоже на виртуальную плату Arduino с дисплеем в виде окна программы, с возможностью считывать координаты мышки и нажатие клавиш, записывать файлы и работать с COM-портом. Можно будет написать программу для железки и для Windows в привычной IDE и на си. Разумеется, это не для полноценных программ, а скорее для отладочных, рабочих, которые можно сделать на скорую руку.

Также я придумал такую функцию: эта программа мониторит COM-порт. Вы подключаете своё устройство и оно через порт передаёт специальную прошивочку, которая запускается на Windows. И у вас есть уже хоть и примитивный, но графический интерфейс. Радость тут в том, что программа одна, универсальная, а вся логика у вас в микроконтроллере или в какой-то внешней EEPROM, причём в сжатом виде. Эдакий терминал для COM-порта со встроенной виртуальной машиной на ядре AVR.

Конечно, есть Processing, но мне интересно как вам идея, которую я описал? Стоит браться за неё?

 

-NMi-
Offline
Зарегистрирован: 20.08.2018

крута.

bwn
Offline
Зарегистрирован: 25.08.2014

Не "Умный шлём", конечно, но близко. )))) 

sadman41
Offline
Зарегистрирован: 19.10.2016

avr-java?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Я чего-то не понимаю, или человек пытается изобрести Proteus для отладки прошивок без Proteus?

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

нет тут java нигде. Обычный WinAPI32

negavoid
Offline
Зарегистрирован: 09.07.2016

Nanoslavic пишет:

Хочу сделать специальную программу для Windows, которая будет "проигрывать" прошивку для микроконтроллера, только вместо всяких регистров, АЦП, таймеров у него будет специальный интерфейс для вызова функций Windows.

Эта часть понятна, это proteus или любой другой эмулятор.

Nanoslavic пишет:

Это будет похоже на виртуальную плату Arduino с дисплеем в виде окна программы, с возможностью считывать координаты мышки и нажатие клавиш, записывать файлы и работать с COM-портом. Можно будет написать программу для железки и для Windows в привычной IDE и на си. Разумеется, это не для полноценных программ, а скорее для отладочных, рабочих, которые можно сделать на скорую руку.

Не очень понятна суть идеи. И так можно написать программу для железки и для windows в привычной ide на си - visual studio. Или типа пишем в arduino ide с вайрингом, выбираем нашу виртуальную плату - эмулятор, "прошиваем", и... и что? а, например, i2c датчики куда совать, в флоппи дисковод или в cd-rom?

Nanoslavic пишет:

Также я придумал такую функцию: эта программа мониторит COM-порт. Вы подключаете своё устройство и оно через порт передаёт специальную прошивочку, которая запускается на Windows. И у вас есть уже хоть и примитивный, но графический интерфейс. Радость тут в том, что программа одна, универсальная, а вся логика у вас в микроконтроллере или в какой-то внешней EEPROM, причём в сжатом виде. Эдакий терминал для COM-порта со встроенной виртуальной машиной на ядре AVR.

Хм, это как картриджи в денди вставлялись, только тут в ПК будут вставляться ардуины? И ещё и передавать винде на выполнение какой-то добавочный ELF, не свою прошивку, а файл с ещё одной прошивкой? Ой вэй...

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

negavoid пишет:

Не очень понятна суть идеи. И так можно написать программу для железки и для windows в привычной ide на си - visual studio. Или типа пишем в arduino ide с вайрингом, выбираем нашу виртуальную плату - эмулятор, "прошиваем", и... и что? а, например, i2c датчики куда совать, в флоппи дисковод или в cd-rom?

короче, проще сделать и показать, чем объяснить. Мне главное, чтобы кто-нибудь затестил на своей винде. А может это и под Wine в Linux заработает. Я документик сделаю с описанием. 

b707
Offline
Зарегистрирован: 26.05.2017

Nanoslavic пишет:

короче, проще сделать и показать, чем объяснить. Мне главное, чтобы кто-нибудь затестил на своей винде. А может это и под Wine в Linux заработает. Я документик сделаю с описанием. 

дерзайте...

negavoid
Offline
Зарегистрирован: 09.07.2016

Да нет, сперва обычно объясняют, цель и средства, хотя бы себе, потом другим. Пока не получилось.

Я, кажется, понял, во втором абзаце - вы хотите сделать клон processing, и разработать некий протокол обмена между ардуиной и вашим клоном, и, типа, когда пишете программу для ардуины, можно прямиком в ней будет написать типа pc_file_open(), pc_file_write(), get_mouse_coords(x,y), call_winapi( function, params ), ну и всё такое в этом духе? Но тогда как это соотносится с первым абзацем, про эмуляцию?

Это, насчёт com-порта. Пока ардуина не воткнута, никакого порта нет. Воткнули что-то - порт появился, ваша программа его оккупирует и начинает ждать оттуда мини-прошивку (или поток команд для клона процессинга) - а на самом-то деле это блин я модем воткнул, и не хотел бы, чтобы ваше поделие захватило порт.

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

negavoid пишет:

Я, кажется, понял, во втором абзаце - вы хотите сделать клон processing, и разработать некий протокол обмена между ардуиной и вашим клоном, и, типа, когда пишете программу для ардуины, можно прямиком в ней будет написать типа pc_file_open(), pc_file_write(), get_mouse_coords(x,y), call_winapi( function, params ), ну и всё такое в этом духе? Но тогда как это соотносится с первым абзацем, про эмуляцию?

Примерно так. Это виртуальная машина, в качестве байт-кода выступает код для AVR-микроконтроллера. То есть программа пишется для AVR, но вместо драйверов для портов, АЦП и другой периферии будет драйвер вызова API Windows. Бред, конечно, но уже всё продумано до мелочей.

negavoid пишет:

Это, насчёт com-порта. Пока ардуина не воткнута, никакого порта нет. Воткнули что-то - порт появился, ваша программа его оккупирует и начинает ждать оттуда мини-прошивку (или поток команд для клона процессинга) - а на самом-то деле это блин я модем воткнул, и не хотел бы, чтобы ваше поделие захватило порт.

Ну тут же настройки можно сделать. На самом деле винда обычно под каждое устройство старается выделять свой номер порта от 2 до 255. Да и программа может просто подключиться, сделать запросик в порт, не получит нужный ответ и закроет порт. Тут я не так детально продумывал, может автоматически и не стоит подключаться, а только по кнопке внутри программы.

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

b707 пишет:

дерзайте...

А вы потестируете?:)

negavoid
Offline
Зарегистрирован: 09.07.2016

Nanoslavic пишет:
Это виртуальная машина, в качестве байт-кода выступает код для AVR-микроконтроллера. То есть программа пишется для AVR, но вместо драйверов для портов, АЦП и другой периферии будет драйвер вызова API Windows.

O_O

А кто ж её, такую программу, скомпилирует??? avr-gcc с вайрингом знает всё про порты и ацп, но не знает ничего про winapi?

PS люди даже банк-клиенты не запускают на своей винде, всё в виртуалке. Можете тоже смело тестировать у себя на виртуалках.

sadman41
Offline
Зарегистрирован: 19.10.2016

Придется дополнительно писать компилятор, который будет знать всё про АЦП в Windows.

nik182
Offline
Зарегистрирован: 04.05.2015

Вообще то большая часть идеи - дизассемблер avr.

rkit
Offline
Зарегистрирован: 23.11.2016

Он хочет, чтобы в железке находился windows-интефейс для управления этой железкой. Что сложно и не нужно.

negavoid
Offline
Зарегистрирован: 09.07.2016

nik182 пишет:
Вообще то большая часть идеи - дизассемблер avr.

И потом листинг парсить и выполнять, подменяя кое-что на своё? Проще уж сразу elf загружать и исполнять на vcpu. Только, думается мне, ТС хочет не совсем этого.

rkit пишет:
Он хочет, чтобы в железке находился windows-интефейс для управления этой железкой. Что сложно и не нужно.

Согласен. И эмуляция тут тоже не нужна.

Впрочем, он по ходу уже пишет, скоро посмотрим. Или не скоро. :)

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

negavoid пишет:

Впрочем, он по ходу уже пишет, скоро посмотрим. Или не скоро. :)

Да, на самом деле бета версия уже готова. Просто интересно, поймёт ли кто идею, но походу я придумал очень специфичный велосипед. Скоро доделаю страницу для этого проекта и выложу.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nanoslavic пишет:
Скоро доделаю страницу для этого проекта и выложу.
Ждём-с.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

как всегда интересные люди, в понедельник у него вопрос "Стоит браться за неё?", во вторник "Да, на самом деле бета версия уже готова".

ну да, ждем-с.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

сегодня, в среду, она уже потестирована и взорвалась, засыпав ТС ошмётками байт

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020

DetSimen пишет:

сегодня, в среду, она уже потестирована и взорвалась, засыпав ТС ошмётками байт

Что такое ТС? Всё нормально, просто нудятины очень много с документацией.

sadman41
Offline
Зарегистрирован: 19.10.2016

Пёс с ней, документацией, всё равно никто читать её не будет первые полгода.

Logik
Offline
Зарегистрирован: 05.08.2014

xDriver пишет:

как всегда интересные люди, в понедельник у него вопрос "Стоит браться за неё?", во вторник "Да, на самом деле бета версия уже готова".

ну да, ждем-с.

А шо там писать ту бетаверсию?! Меню главное набросал, открыть-сохранить-о программе. Последний пункт важно верно заполнить, автора не забыть. А некоторая часть второстепенного функционала в бете может временно отсутствовать.

negavoid
Offline
Зарегистрирован: 09.07.2016

Это называется не бета-версия :) и даже не пре-альфа.

Nanoslavic
Nanoslavic аватар
Offline
Зарегистрирован: 01.03.2020