-1

尝试从http://ms-iot.github.io/content/16x2LCD.htm在 Intel Galileo 上运行一些示例代码

基本上只是将字符写入 LCD 模块。LiquidCrystal 库不适用于 Visual Studio,因为来自不同库的复合类。基本上我得到编译错误 C2653 和其他一些错误,因为类 Print 和对象 print 用于不同的类并复合。任何人都知道修复错误的方法

    error C2011: 'Print' : 'class' type redefinition    
          class Print{
                  private:  int write_error;    
    error C2039: 'print' : is not a member of 'LiquidCrystal'
          lcd.print("Hello!");
    error C2504: 'Print' : base class undefined
          class LiquidCrystal : public Print {  public:
    error C2873: 'write' : symbol cannot be used in a using-declaration,
            using Print::write;
    error C2027: use of undefined type 'Print'
            using Print::write;
    error C2873: 'write' : symbol cannot be used in a using-declaration 
            using Print::write;

我认为问题是由于命名空间未被识别,并且在 LCD 类中使用 Print.h 使用 Print 写入 LCD 显示器被过度使用。

如何在 LCD 类中调用 Print 的函数,以便每次调用 Print.h 时都不会重新定义它?

4

1 回答 1

0

http://sixfortyfour.wordpress.com/2014/09/26/displaying-intel-galileo-ip-address-on-a-16x2-lcd/ 作为快速修复,我修改了 Print.h 和 Stream.h,文件位于 {Galileo 项目文件夹}\packages\Microsoft.IoT.Galileo.Arduino.1.0.5\build\native\include。对于 Print.h,我添加了:

#ifndef _PRINT_H
#define _PRINT_H

class Print
{
// Rest of print class
}

#endif

对于 Stream.h 我改变了:

enter code here类流:公共打印-> 类流

我检查了 github 存储库并且 Print.h 包含更改, Stream.h 仍然继承自 Print ( https://github.com/ms-iot/galileo-sdk/tree/develop/source )。

我还修改了 RS、ENABLE、D0、D1、D2、D3 以匹配我用于 netduino 项目的 LCD 配置。

于 2014-09-28T09:32:23.133 回答