Отговори на тема  [ 12 мнения ] 
има ли тук специалисти по ардуино? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4572
Местоположение: Новата земя на племето Мутум'ба
Мнение има ли тук специалисти по ардуино?
Заиграл със се с това нещо с за пръв път и искам да постигна конкретен резултат, обаче имам код който си е на обикновено С а искам да викам оттам дуински функции. Другата посока (дуино вика С) е без проблем, обаче не намирам начин за тая посока дето на мен ми трябва.
Дали е възможно изобщо? Някакви идеи?

_________________
'просто' е технически синоним на 'красиво'


Чет Яну 10, 2019 11:33 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 8:19 pm
Мнения: 4410
Местоположение: Stara Zagora
Мнение Re: има ли тук специалисти по ардуино?
Ардиуното не компилира ли всичко като C++ код?
Или *.c файловете ги компилира като C код?


Чет Яну 10, 2019 1:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: има ли тук специалисти по ардуино?
C++ компилира, обаче преди това минава през един препроцесор: https://github.com/arduino/arduino-preprocessor

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

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

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

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


Чет Яну 10, 2019 4:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4572
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: има ли тук специалисти по ардуино?
Ами си знам само чисто С. Плюсовете ме отвращават с разните им там класове и т.н...
Това което искам да постигна е да мога от моя код (на чисто С) да викам някак си функции от библиотеките на дуиното за да мога да се възползвам от функциите за ниското ниво. Пробвах всякак с пътищата ама не става защото изглежда че по някакъв начин трябва да направя някаква обвивка, вероятно на С++, която да експортва тия функции така че аз да мога да ги викам от моя С код. Поне така си мисля ама не съм сигурен та затова питам. Би ме учудило ако никой досега в света не се е сблъсквал с подобен проблем и няма решение

_________________
'просто' е технически синоним на 'красиво'


Чет Яну 10, 2019 5:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

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


Чет Яну 10, 2019 5:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: има ли тук специалисти по ардуино?
Ардуино библиотеките са C++, тоест класове с методи. Няма как да извикаш директно метод на клас от С. Може както Гичо предлага, но ако си пребориш отвръщението може и да компилираш твоя код като С++.

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

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


Чет Яну 10, 2019 5:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 8:19 pm
Мнения: 4410
Местоположение: Stara Zagora
Мнение Re: има ли тук специалисти по ардуино?
C++ си компилира C кода ти обикновено директно.
Тоест пишеш си C кода в *.ino или *.cpp файлове и си викаш каквото ти душа сака от ардуинските функциионалности.
Никой не ти налага да пишеш класове. Но това което е класове си го ползваш както си му е реда.
Иначе трябва да пишеш както казаха колегите функции които да викат съответните ардуино функционалности.


Чет Яну 10, 2019 6:12 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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

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

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

_________________
main[-1u]={1};


Чет Яну 10, 2019 6:52 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

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


Пет Яну 11, 2019 10:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: има ли тук специалисти по ардуино?
Така е ако използва Ардуино/С++ класове и библиотеки (налични, готови... )
но АКО си пише нещо негово (я сензор, я някаква математика ... ) може спокойно да си го напише на С или асемблер
В основата на Ардуиното е С ( ядро, периферия, интерфейси... ), после е надградено до С++ Ардуино Апи

_________________
main[-1u]={1};


Пет Яну 11, 2019 3:03 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: има ли тук специалисти по ардуино?
TheWizard написа:
Така е ако използва Ардуино/С++ класове и библиотеки (налични, готови... )


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


Пет Яну 11, 2019 6:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: има ли тук специалисти по ардуино?
няма ограничения в Arduino / PlatformIO
основно GCC ... водещо C++ ... миксирай Asm/С/С++ "както знаеш" по "законите" на компилатора

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

_________________
main[-1u]={1};


Пет Яну 11, 2019 6:59 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 12 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: syscop и 9 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни