| Микроконтролери и електроника 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 [ Пет Яну 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/ |
|