Bir .ino dosyası neden aynı adlı bir klasörde olmalıdır?


12

Çok karmaşık bir proje düzenlemeye çalışıyorum ve (gerçek src) adlı bir klasöre tüm gerçek kodu koymak istiyorum , ama (aynı zamanda içinde olacak ) ana .inodosyayı tutmak istiyorum . Sonra kodu açmaya çalıştığımda, IDE adlı bir klasörde olması gerektiğini söylüyor .main.inosrcmain.inomain

Bu neden?

Hata mesajını tamamen anlıyorum, ama neden Arduino'daki dosya adlandırma böyle olmalı. Bunu değiştirmenin bir yolu var mı?

Yanıtlar:


6

AFAIK, bu Arduino IDE'de yerleşik bir tuhaflık. Düşünebileceğim en iyi geçici çözüm, aşağıdaki gibi bir dosya yapısıdır:

ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
                                  + myproj.ino    + sensor.h
                                                  + sensor.cpp
                                                  + (more files)

, burada benimproj.cpp sadece #includemain.cpp. Bu, proje dosyalarınızı daha tipik bir ortamda da çalışacak şekilde "temiz" bırakmalıdır.

Güncelleme:

Sorunuzdan "ana" adını ödünç aldım, ancak yansıma üzerine, "ana" ayrılmış bir addır, özellikle her C veya C ++ programı, sistem tarafından sağlanan en üst düzey kodu olarak bir main.c veya main.cpp'ye sahiptir. bir tane sağlamazsın. Bu yüzden klasör ve proje adı olarak kullanmaktan kaçındım (ancak denemekten çekinmeyin) ve diyagramı güncelledim. İhtiyacınız olan şey, aynı adlı bir proje klasörü ve içindeki bir .ino dosyasıdır. .İno dosyası

#include <src/anything-else-you-like>

, örneğin, üst düzey kod dosyanız, böylece her şeyi çeker. Derleyicinin kendi başına çözülmemesi durumunda #include, srcklasördeki dosyaların her birine .ino'nuz için ihtiyacınız olabilir , diğer dosyalarınızın olduğu yer burasıdır.

BTW, üst dosyanız için main.cpp adını kullanırsanız, setup () ve loop () işlevlerini (ve bunu kullanırsanız seri olay işlevini) çağırmanız gerekir. 'Ana' adını yalnız bırakmak, sistemin her Arduino programının varsayılan olarak aldığı ana ile aynı olmasını sağlayın ve proje kodunuzu tipik Arduino yolunu yazın (setup () ve loop () ile başlayarak).


myproj.cpp, yani myproj.ino? Çünkü nerede myproj.cppolduğunu anlamıyorum !
Dat Ha

Tamam, küçük bir sorun, bunu yaparsam, sensor.cpp içinde bulunan bazı temel Arduino işlevleri (map () ve analogRead () gibi) derleyici tarafından tanınmayacaktır.
Dat Ha

Alternatif olarak, bir Windows kutusu üzerinde çalışıyorsanız, junction komutunu kullanın ve doğru ad dizinini daha iyi adla dizine "bağlayın". Veya bir Linux kutusu üzerinde çalışıyorsanız, aynısını yapmak için sembolik link komutunu kullanın.
st2000

(Güncellememe bakın - .ino dosyanızın diğer dosyaların her birini içermesi gerekebilir).
JRobert

3

Çok sayıda .INOdosyadan oluşan bir projeniz olduğunda, IDE'nin hangisinin "ana" olanı nasıl bilmesi gerekir? Derleme sırasında IDE tüm .INOdosyaları tek bir yekpare dosyada birleştirir. Bunu "ana" olandan başlayarak yapar ve sonra diğerlerinin her birini alfabetik olarak sonuna ekler.

Bu şekilde yapılır, böylece "ana" .INOdosyanıza eklemeniz gereken içerme ve genel değişkenleriniz bitmiş programın başında olur.

Bunu yapabilmek için IDE, hangi dosyaların "ana" olduğunu bilmelidir. Ve bunun nasıl çalıştığı, çizimin bulunduğu klasörle aynı adlı dosyayı bulmaktır.

In UECIDE ben o daha ileri bir adım atmak ve bir içine bütün bir klasör açmak bileşik belgenin artık bir klasör girin ve açmak zorunda .INObir kroki açmak için dosyayı - gerçek klasörün kendisini bütün kroki projedir. Yine bu tür bir klasör, içinde klasörle .INOaynı adlı bir dosyaya sahip olarak tanımlanır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.