【问题标题】:C++: Way to create the equivalent of Arduino 'byte' in XcodeC++:在 Xcode 中创建相当于 Arduino 'byte' 的方法
【发布时间】:2013-01-17 22:57:03
【问题描述】:

背景:

我正在编写一个ATmega328。我受不了 Arduino IDE,所以我更喜欢使用Xcode 来编写代码。但是,我发现使用 Xcode 将草图实际上传到 Arduino 的所有在线选项充其量都是令人费解的,并且在尝试实现它们时没有成功。

当前方法:

目前对我有用的是严格使用 Xcode 作为调试器,并在我需要时“创建”精简版本的 Arduino 类,这样当我输入特定于 Arduino 的代码行时调试器就不会崩溃.例如,我的 Xcode 项目中有一个 Serial 类,它具有以下功能,可以正常工作:

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

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

我对字符串以及我可能需要打印的任何其他标准 C++ 数据类型执行相同操作。

这样,每当我想将Serial.print 放在我正在处理的另一个类的函数中时,我都可以在 Xcode 中严格调试,而无需打开 Arduino IDE。我还可以为pinMode 等创建一个“假”类。

问题:

我想使用 Arduino 环境中使用的 byte 数据类型来执行此操作。我正在对这个程序采用面向对象的方法,它可能会耗尽我的小 Arduino 上宝贵的 RAM。所以,为了节省空间,我将我所有的ints 转换为bytes 等等。

但是,我假设(我的编译器告诉我)我不能继承 charint 或任何其他基本类型。我不知道如何开始使用诸如“byte a = 2”之类的语句或与我当前(有些复杂)解决方法类似的语句。

基本上,我想诱使 Xcode 认为 byteint 在所有意图和目的上都是一样的。

有什么想法吗?

【问题讨论】:

    标签: c++ xcode class arduino


    【解决方案1】:

    您正在寻找typedef 关键字:

    typedef int byte;
    

    int 类型通常大于单个字节。你真正想要的是:

    typedef unsigned char byte;
    

    【讨论】:

      【解决方案2】:

      类型定义。 (顺便说一句,你要欺骗的不是 Xcode,而是编译器。

      typedef int byte;
      

      typedef uint8_t byte;
      

      【讨论】:

        【解决方案3】:

        通过重用为 Mac 实现 Arduino 硬件抽象层的 ncore,您可能会节省很多精力。

        即使您想手动执行此操作,也值得一看 ncore。它使用以下方式定义字节:

        typedef uint8_t byte;
        

        (事实上,这正是与 Arduino IDE 捆绑的库的定义方式!)

        【讨论】:

        • 感谢您的提醒。我尝试将 ncore 文件夹放入我的 XCode 项目中,但出现了各种错误。自述文件似乎表明最好从命令行使用 ncore,这是我既不需要也不想处理的复杂程度。
        猜你喜欢
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多