2

バックグラウンド:

ATmega328をプログラミングしています。私は Arduino IDE に我慢できないので、コードを書くためにXcodeを使用することを好みます。ただし、Xcode を使用してスケッチを Arduino に実際にアップロードするためにオンラインで利用できるすべてのオプションは、せいぜい複雑であり、それらを実装しようとしてもうまくいきませんでした。

現在の方法:

現在私にとってうまく機能しているのは、Xcodeを厳密にデバッガーとして使用することです.Arduinoクラスの「作成」は、必要なときにArduinoクラスのバージョンを取り除いて、Arduinoに固有のコード行を入れてもデバッガーが異常にならないようにします. たとえば、Xcode プロジェクトに Serial クラスがあり、次の関数があり、問題なく動作します。

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

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

文字列に対しても同じことを行い、出力する必要があるその他の標準C++データ型についても同様に行います。

Serial.printこのようにして、作業中の別のクラスの関数内に配置したいときはいつでも、Arduino IDE を開かずに Xcode 内から厳密にデバッグできます。pinModeなどの「偽の」クラスを作成することもできます。

問題:

byteArduino環境で使用されるデータ型でこれを行いたいと思います。私はこのプログラムにオブジェクト指向のアプローチを採用していますが、私の小さな Arduino の貴重な RAM を食いつぶす恐れがあります。したがって、スペースを節約するために、すべてのints をbytes などに変換しています。

charしかし、私は、 、 またはint、またはその他の基本型をサブクラス化できないと想定しています (そしてコンパイラが教えてくれます) 。byte a = 2" " のようなステートメントの使用を開始する方法や、現在の (やや複雑な) 回避方法と同様のものを使用する方法がわかりません。

基本的に、私は Xcode をだまして、すべての意図と目的とbyte同じことを考えさせたいと考えています。int

何か案は?

4

3 に答える 3

3

typedefあなたはキーワードを探しています:

typedef int byte;

ただし、intタイプは通常1バイトより大きくなります。あなたが本当に欲しいのは:

typedef unsigned char byte;
于 2013-01-17T22:58:55.770 に答える
2

Typedef。(ちなみに、だまされるのはXcodeではなく、コンパイラです。

typedef int byte;

また

typedef uint8_t byte;
于 2013-01-17T22:59:42.683 に答える
1

Mac 用の Arduino ハードウェア抽象化レイヤーを実装するncoreを再利用することで、おそらく多くの労力を節約できます。

これを手動で行いたい場合でも、ncore を検討する価値があります。以下を使用してバイトを定義します。

typedef uint8_t byte;

(実際、これは Arduino IDE にバンドルされているライブラリが定義する方法とまったく同じです!)

于 2013-01-18T13:12:42.780 に答える