Попытка запустить пример кода на Intel Galileo из http://ms-iot.github.io/content/16x2LCD.htm
В основном, просто запись символов на ЖК-модуль. Библиотека 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;
Я думаю, что проблема связана с тем, что пространство имен не распознается, и использование Print.h в классе LCD, использующем Print для записи на ЖК-дисплей, чрезмерно используется.
Как я могу вызвать функции Print в классе LCD, чтобы Print.h не переопределялся при каждом вызове?
http://sixfortyfour.wordpress.com/2014/09/26/displaying-intel-galileo-ip-address-on-a-16×2-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
Класс Stream: public Print -> Класс Stream
Я проверил репозиторий github и Print.h включает изменения, Stream.h все еще наследует от Print (https://github.com/ms-iot/galileo-sdk/tree/develop/source).
Я также изменил RS, ENABLE, D0, D1, D2, D3, чтобы они соответствовали конфигурации LCD, которую я использовал для проекта netduino.