Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

има ли тук специалисти по ардуино?
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=16301
Страница 1 от 1

Автор:  Н'бабане Гт'муан'га [ Чет Яну 10, 2019 12:33 pm ]
Заглавие:  има ли тук специалисти по ардуино?

Заиграл със се с това нещо с за пръв път и искам да постигна конкретен резултат, обаче имам код който си е на обикновено С а искам да викам оттам дуински функции. Другата посока (дуино вика С) е без проблем, обаче не намирам начин за тая посока дето на мен ми трябва.
Дали е възможно изобщо? Някакви идеи?

Автор:  Nikola Kirov [ Чет Яну 10, 2019 2:24 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Ардиуното не компилира ли всичко като C++ код?
Или *.c файловете ги компилира като C код?

Автор:  radolin [ Чет Яну 10, 2019 5:36 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

C++ компилира, обаче преди това минава през един препроцесор: https://github.com/arduino/arduino-preprocessor

Вместо страндартната main функция в техния 'скеч' имат две функции setup и loop, като първата се извиква веднъж, а втората я върти един безкраен цикъл.

Тук има описание на билд процеса: https://github.com/arduino/Arduino/wiki/Build-Process

Повечето Ардуино библиотеки са C++. Ако оправиш include пътищата на компилатора би трябвало да може да ги ползваш и извън Ардуино средата.

Ти искаш да ползваш Ардуино средата, или да билдваш извън нея?

Автор:  Н'бабане Гт'муан'га [ Чет Яну 10, 2019 6:03 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Ами си знам само чисто С. Плюсовете ме отвращават с разните им там класове и т.н...
Това което искам да постигна е да мога от моя код (на чисто С) да викам някак си функции от библиотеките на дуиното за да мога да се възползвам от функциите за ниското ниво. Пробвах всякак с пътищата ама не става защото изглежда че по някакъв начин трябва да направя някаква обвивка, вероятно на С++, която да експортва тия функции така че аз да мога да ги викам от моя С код. Поне така си мисля ама не съм сигурен та затова питам. Би ме учудило ако никой досега в света не се е сблъсквал с подобен проблем и няма решение

Автор:  gicho [ Чет Яну 10, 2019 6:22 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

И на мен ми се чини че ще ти трябва по средата да има C++ файл който да обгрижва нещата и да ти дава C API (extern "C") към останалия ти код.
И тук така мислят:
https://stackoverflow.com/questions/24657009/how-do-i-use-arduino-libraries-with-standard-c-code
Ако не са много и сложни библиотеките можеш да ги преработиш, но то реално е същото. Като обем на работа ще има разлика в едната или другата посока, в зависимост къде е по-широк интерфейса.

Автор:  radolin [ Чет Яну 10, 2019 6:57 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Ардуино библиотеките са C++, тоест класове с методи. Няма как да извикаш директно метод на клас от С. Може както Гичо предлага, но ако си пребориш отвръщението може и да компилираш твоя код като С++.

Друго, което трябва да имаш предвид е, че Ардуино средата следва някакви свои си конвенции - примерно ползва Timer0 за да осигури функцията millis() и подобни.

Ти кои библиотеки искаш да ползваш?

Автор:  Nikola Kirov [ Чет Яну 10, 2019 7:12 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

C++ си компилира C кода ти обикновено директно.
Тоест пишеш си C кода в *.ino или *.cpp файлове и си викаш каквото ти душа сака от ардуинските функциионалности.
Никой не ти налага да пишеш класове. Но това което е класове си го ползваш както си му е реда.
Иначе трябва да пишеш както казаха колегите функции които да викат съответните ардуино функционалности.

Автор:  TheWizard [ Чет Яну 10, 2019 7:52 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Бабане, порт ли пишеш, апликация, библиотека... ?
и съ чудя за кво са набутали тва ".ino" като си е с++ (в PlatformIO-то няма разширения ино -> cpp)
иначе си е стандартно викане от С++ .... extern "C" void function(....
или си оправи С хидърите с:
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
#endif

може изобщо да не следваш ардуино "конвенциите"... нямаш никакви ограничения

Ардуиното компилира каквото може GCC .... като най-използван компилатор

Автор:  gicho [ Пет Яну 11, 2019 11:51 am ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Проблемът е че трябва да конструира обектите от ардуино библиотеките, преди да ги ползва. А това не става със C-код - доколкото разбрах той иска да избегне писането на C++, но няма как да стане понеже библиотеките обикновено са класове. Има изключения, но са достатъчно редки и нямат отношение към случая.
Реално, ако отдели няколко часа да види примерите за 2-3 библиотеки, които да кажем му трябват, ще е в час и няма да се чуди изобщо. Но ако иска да направи някаква среда в която да може да вкара произволна библиотека, и евентуално на неговите платки да могат клиенти през C да ползват всякакви библиотеки, ще е по-сложно - ще трябва wrapper, а за да е той универсален (да не портва всяка библиотека) ще е трудно - макросите/темплейтите може и да свършат работа, но задачата би била нещо като generic викане на c++ код от C - а това не ми е известно някой да го е правил.
Може и някакъв код генератор да се измисли, с уговорката че повечето библиотеки са сравнително прости като архитектура - да се завърти конструктора към функция, и да се експортират методите като други функции, и да има структура за вътрешните данни - но това не е много смислено като задача ако приемем че не-харесването на плюс-плюса е движещата сила.

Автор:  TheWizard [ Пет Яну 11, 2019 4:03 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

Така е ако използва Ардуино/С++ класове и библиотеки (налични, готови... )
но АКО си пише нещо негово (я сензор, я някаква математика ... ) може спокойно да си го напише на С или асемблер
В основата на Ардуиното е С ( ядро, периферия, интерфейси... ), после е надградено до С++ Ардуино Апи

Автор:  radolin [ Пет Яну 11, 2019 7:09 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

TheWizard написа:
Така е ако използва Ардуино/С++ класове и библиотеки (налични, готови... )


Аз доколкото разбирам точно това иска.

Автор:  TheWizard [ Пет Яну 11, 2019 7:59 pm ]
Заглавие:  Re: има ли тук специалисти по ардуино?

няма ограничения в Arduino / PlatformIO
основно GCC ... водещо C++ ... миксирай Asm/С/С++ "както знаеш" по "законите" на компилатора

водещото С++ е базирано на
https://en.wikipedia.org/wiki/Wiring_(d ... t_platform)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/