2017-12-12 2 views
0

Ich würde gerne wissen, was in meinem Code fehlt. Die Arduino-Compiler, IDE Version 1.8.0, erzeugt diesen Fehler:Arduino mehrere Datei Objektbereich

'swSerial' was not declared in this scope

Der Code diese drei Dateien, die in einem Ordner enthalten, werden als "object_scope".

//  object_scope.ino 
// 
#include <SoftwareSerial.h> 
#include "mylib.h" 
const byte rxPin = 2; 
const byte txPin = 3; 
SoftwareSerial swSerial (rxPin, txPin); 

void setup() { 
    swSerial.begin(9600); 
    swSerial.println("Hello"); 
    printSum(4, 5); 
} 

void loop() { 
} 

//  mylib.cpp 
// 
#include "mylib.h" 

void printSum(int a, int b) { 
    int sum = a+b; 
    swSerial.println (sum); 
    // generates error "'swSerial' was not declared in this scope" 
} 

//  mylib.h 
// 
#ifndef mylib_h 
#define mylib_h 
void printSum(int a, int b); 
#endif 

Antwort

0

erklären Sie swSerial gut nach mylib.h, so dass, wenn mylib.cpp kompiliert wird, wird der Compiler nicht über swSerial noch nicht. Der einfachste Weg wäre für Sie eine Instanz von swSerial-printSum weitergeben müssen:

void setup() { 
    swSerial.begin(9600); 
    swSerial.println("Hello"); 
    printSum(swSerial, 4, 5); 
} 


[...] 


void printSum(SoftwareSerial sw, int a, int b) { 
    int sum = a+b; 
    sw.println (sum); 
} 
-3

BulldogLowell @Arduino Forum eine andere Art und Weise zur Verfügung gestellt, die ich bevorzugt. Seine Lösung bestand darin, am Anfang der Datei mylib.cpp zwei Anweisungen hinzuzufügen.

#include <SoftwareSerial.h> 
extern SoftwareSerial swSerial; 

Diese 3-Dateien sind eine Vereinfachung eines mehrere Datei Code mit vielen Anrufe an die SoftwareSerial Bibliotheksfunktionen. In diesem Zusammenhang wäre eine Bezugnahme auf all diese Funktionen etwas umständlich.

Verwandte Themen