2013-01-17 49 views
2
創建Arduino的 '字節' 相當於

背景:C++:途徑在Xcode

我編程的ATmega328。我受不了Arduino IDE,所以我更喜歡使用Xcode來編寫代碼。但是,我發現所有可用的在線選項都可以使用Xcode將草圖實際上傳到Arduino中,使其變得錯綜複雜,並且沒有成功實現它們。

電流法:

什麼目前很適合我是使用Xcode中嚴格作爲調試器,和「創造」的Arduino類的精簡版本,當我需要他們,所以調試器不發飆的時候我放入特定於Arduino的代碼行。例如,我在其中具有以下功能,這只是罰款我的Xcode項目串行類:

void Serial::print(int myInt) 
{ 
    cout << myInt; 
} 

void Serial::println(int myInt) 
{ 
    cout << myInt << endl; 
} 

我做琴絃一樣,和任何其他標準C++數據類型,我可能需要打印。

這樣,任何時候我想把Serial.print放在另一個類的函數中,我可以在不打開Arduino IDE的情況下嚴格地從Xcode中進行調試。我還可以創建一個「假」類pinMode

問題:

我想與在Arduino的環境中使用的數據類型byte做到這一點。我正在採用面向對象的方法來實現這個程序,並且它可能會讓我的小Arduino吃掉珍貴的RAM。所以,爲了節省空間,我將所有的int s轉換爲byte s等等。但我假設(和我的編譯器告訴我)我不能繼承charint或任何其他基本類型。我沒有看到如何開始使用像「byte a = 2」之類的語句或類似於我目前的(稍微複雜的)解決方法。

本質上,我想誘使Xcode思考byteint是一樣的東西,用於所有意圖和目的。

任何想法?

回答

2

類型定義。 (順便說一下,這是不是Xcode的誰,你會被愚弄,但是編譯器。

typedef int byte; 

typedef uint8_t byte; 
3

您正在尋找typedef關鍵字:

typedef int byte; 

int類型通常比一個字節大。你真的可能想要的是:

typedef unsigned char byte; 
1

您可以通過重用ncore它實現可能爲自己省下不少功夫Mac的Arduino硬件抽象層。

即使你想手工做這件事,值得看看ncore。它定義字節使用:

typedef uint8_t byte; 

(事實上,這正是與Arduino的IDE捆綁在一起的庫如何定義它呢!)

+1

感謝擡起頭。我試着把ncore文件夾放到我的XCode項目中,並得到各種各樣的錯誤。自述似乎表明ncore最好從命令行使用,這是我既不需要也不想處理的複雜程度。 –

+0

這對我來說很有用。謝謝! –