Ардуино защо да не съставя скици (и как да се избегне)

Ардуино защо да не съставя скици (и как да се избегне)

Тъй като аз съм разработването на интензивно в Ардуино, тогава въпросът искрено притеснен. Защо скица, написано на един вариант на IDE отказва да компилирате в съседни версии? Същият въпрос съм прибрана потребители Arduino Mega система Server. Защо AMS се компилира в 1.6.5 и отказва да бъде съставен в 1.6.4, 1.6.7 и 1.6.8?

И последно, в процеса на пренасяне на Arduino Mega сървър на новия контролер Genuino 101, аз бях в състояние да реши този огромен пъзел. И в тази статия ще споделя с вас това свещено знание и скици, а след това винаги ще бъде успешно компилиран. Така че ...

Логиката на нещата

Логично е, кодът, който компилира успешно във всяка версия на средата за програмиране, като например 1.6.5, е необходимо да се изготвят в съседни версии на IDE, че тези версии се различават само в третото място и са почти същите, с леки модификации , Но това не се случва. Защо?

вътрешна кухня

За да разберем това, трябва да се справят с това как генерирана версия на развойната среда Arduino IDE и как потребителите работят с тези среди за разработка.

Нека започнем с потребителите. Повечето от тях са примитивни проекти компилира, образно казано, в 20 линии и няма проблеми с тези проекти. Тези проекти са били успешно събрани с всяка версия на IDE, защото използва само стандартни библиотечни разговори и не променят себе си библиотеките.

Но каквито и да било проекти за развитие на Ардуино не се вписва в "20 линии" и неизбежно се радва на по-малко разпространените функции на библиотеки (които са по-склонни към промени от версия на версия) и неизбежно ще дойдат в библиотеката се нуждаят от промяна, за да отговарят на вашите специфични нужди на проекта.

И след промяната на библиотеката система, вие ставате своя заложник, и са принудени да "влачите" й версия на версия.

Сега нека да се разбере с колко генерирана версия Arduino IDE. И те образуват произволно (Подозирам, че в крайна сметка, един конкретен програмист, някои Mario) подаване на команди. И коя версия на дадена библиотека се включва в разпределението и в каква форма (с някои модификации) остава в съзнанието на "Марио".

Сега се обърне внимание, това е много важно! Производство на отбора преследва само една цел - да разпределение на една версия е взаимно договорено и е в съответствие в себе си. Тяхната задача е да се гарантира, че всички стандартни примери за да работи правилно. И това е всичко! Проблемът на съвместимост между версиите не слагам.

И тъй като 99% от потребителите съставя проекти в "20 линии" този подход напълно, "роли" на практика. А фактът, че каквито и да било сериозни проекти, които не са събрани, проблемите на тези проекти. Слава Богу, сега се разбере механизма на проблема и вече стана ясно, как да се справят с него.

Конкретен пример

Ардуино защо да не съставя скици (и как да се избегне)

Спомнете AMC пренасяне на Genuino 101 (поддържа от версия 1.6.7 и по-висока). Тук Arduino екип е в магазина за нас следващата шега (браво, момчета, не ни позволяват да се отпуснете).

Нашата библиотека: версия = 1.0.4 (не като съставител)
Библиотека на IDE 1.6.7: версия = 1.0.4 (като съставител)

Нашата библиотека: 31 файл (не ми харесва съставител)
IDE 1.6.7 на библиотеката: 31 файл (като съставител)

Нашата библиотека: 123 KB (не като съставител)
Библиотека на IDE 1.6.7: 123 KB (като съставител)

С други думи, Марио "заседнали" в IDE 1.6.7 Ethernet библиотеката със същия брой версия, както в IDE 1.6.5, същия брой файлове със същия размер, но с различно съдържание и забравих ние предупреди за това. И това е "най-различно съдържание" като паяк държи лапите си за IDE и други библиотеките на по-ниско ниво (също модифициран в 1.6.7).

Браво, Марио! С този подход, нищо няма да се компилира, с изключение на стандарта и примери на скици в 20 реда.

Практично решение (пъзели на Ардуино)

Тя се превръща кристално ясен механизма на проекти, защо не се събират в различни версии на Arduino IDE и, съответно, на същия кристал стана ясно, начин да се реши този проблем. В този конкретен случай, разтворът се състои от три части.

  • Част първа. Намирането на работа библиотека. Не забравяйте, че проблемът при издаване на команди за създаване на последователна версия на IDE? Така че някъде трябва да има работеща версия на необходимите библиотеки, за да ни.
  • Втора част. Удължаването на работното Ethernet библиотека от Марио палава на негово място в Arduino Mega сървър на проекта. Няма нищо сложно - просто го копирате до мястото на нашата разбита в IDE 1.6.7 Ethernet библиотека.
  • Трета част. Модификация на проекта Arduino Mega сървър премества и очевидно работи в IDE 1.6.7 Ethernet библиотека.

Същото трябва да се направи с всички nekompiliruyuschimisya Библиотека на проекта (т.е., намери работеща версия на библиотеката от IDE и да го преместите мястото си в проекта и променя, ако е необходимо). Но в този случай имахме късмет, останалата част от библиотеката ще функционира нормално (защото Марио не трябва да ги тихо променени, въпреки че можеше и винаги го правя в новите версии на IDE, но ние вече знаем как да се справят с него).

заключение

Това е цялата тайна на успешна работа в Ардуино със сложни проекти. Сега можете да се чувствате напълно подготвени и няма да бъде трудно да се направи проекта си работа във всяка версия на Ардуино.