steen-h Juniormester
22. marts 2016 - 16:29 Der er 4 kommentarer og
1 løsning

Lave arduino bibliotek

Jeg er ved at lave et arduino bibliotek og er rendt ind i problemer.

Biblioteket er lavet med en class hvor en function kalder en anden function i samme class. Det har jeg set man kan gøre hvis den kaldte function er defineret som static

Bee_spi.h

class Bee_spi
{
  public:
Bee_spi();
void SetTime(int  Hour,int Minute,int  Date,int  Month,int  Year);
static void writeRegisterTime(byte thisRegister, char thisValue);
static void writeRegister(byte thisRegister, char thisValue);
void CSsetup(int UrPin,int KgPin);
   
  private:
static int _UrPin;
static int _KgPin;
};

Bee_spi.cpp
void SetTime(int  Hour,int Minute,int  Date,int  Month,int  Year)
{
    Bee_spi::writeRegisterTime(0x80, 30); // Setup sekunder register
}

Det virker, men er det ikke også den rigtige måde at gøre det på ?

Problemet er private variabler, det virker ikke at definere dem som static
static int _UrPin;
static int _KgPin;

Dem kalder jeg her
void Bee_spi::CSsetup(int UrPin,int KgPin)
{
    pinMode(UrPin, OUTPUT); // Ur
    digitalWrite(UrPin, LOW);
    pinMode(KgPin, OUTPUT);  // Til vejecelle
    digitalWrite(KgPin, HIGH);
    _UrPin = UrPin;
    _KgPin = KgPin;
}

og her
void writeRegister(byte thisRegister, char thisValue)
{
    digitalWrite(_UrPin, HIGH);
    SPI.transfer(thisRegister);
    SPI.transfer(thisValue);
    digitalWrite(_UrPin, LOW);
}

Hvordan gør jeg det ?

Her er fejlmeddelsen

In function 'void writeRegister(byte, char)':
Bee_spi.cpp:61:18: error: '_UrPin' was not declared in this scope
    digitalWrite(_UrPin, HIGH);
arne_v Ekspert
22. marts 2016 - 16:34 #1
Bee_spi.h

class Bee_spi
{
  public:
    Bee_spi();
    void SetTime(int  Hour,int Minute,int  Date,int  Month,int  Year);
    void writeRegisterTime(byte thisRegister, char thisValue);
    void writeRegister(byte thisRegister, char thisValue);
    void CSsetup(int UrPin,int KgPin);
 
  private: 
    int _UrPin;
    int _KgPin;
};

Bee_spi.cpp

void Bee_spi::SetTime(int  Hour,int Minute,int  Date,int  Month,int  Year)
{
    writeRegisterTime(0x80, 30); // Setup sekunder register
}

void Bee_spi::writeRegister(byte thisRegister, char thisValue)
{
    digitalWrite(_UrPin, HIGH);
    SPI.transfer(thisRegister);
    SPI.transfer(thisValue);
    digitalWrite(_UrPin, LOW);
}
steen-h Juniormester
22. marts 2016 - 16:44 #2
Lige det jeg manglede.

Tak for hjælpen Arne, læg et svar
arne_v Ekspert
22. marts 2016 - 17:08 #3
svar
arne_v Ekspert
22. marts 2016 - 17:09 #4
og hvis det ikke var helt klart hvad jeg lavede om:

void writeRegister(byte thisRegister, char thisValue)
{
...
}

er en C style function

void Bee_spi::writeRegister(byte thisRegister, char thisValue)
{
...
}

er en metode i klasse Bee_spi
steen-h Juniormester
22. marts 2016 - 18:11 #5
Det var hel klart, jeg havde stiret mig blind.
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Coop ansætter ny digital direktør: Her er hans vigtigste opgave
Interview: Den danske supermarkedskoncern Coop skifter ud i topledelsen og ansætter Morten Viktor i en nyoprettet stilling som direktør for digital & e-commerce. "Min rolle bliver at få samlet hele det digitale kundemøde," fortæller han.
Computerworld
Stein Bagger gør comeback i ny branche: "De lignede et mafiahold, førte sig frem som nyrige og plaprede løs om urealistiske drømme"
Stein Bagger har skiftet navn og fører sig nu frem i store biler i en helt ny branche, skriver en dansk avis.
CIO
Podcast: Her er seks gode råd om ledelse og digitalisering fra danske top-CIO'er
The Digital Edge: Vi har talt med 17 af Danmarks dygtigste digitale ledere - og samlet deres seks bedste råd om digitalisering og ledelse. Få alle rådene på 26 minutter i denne episode af podcasten The Digital Edge.
Job & Karriere
Se Waoos forklaring: Derfor har selskabet fyret topchef Jørgen Stensgaard med omgående virkning
Waaos bestyrelse opsiger fiberselskabets topchef, Jørgen Stensgaard, der fratræder med omgående virkning. Se hele forklaringen fra Waao her.
White paper
Kunsten at navigere i en tilpasningsøkonomi
Evnen til at tilpasse sig en verden i konstant forandring bliver afgørende for virksomhedens mulighed for at vækste i fremtiden. Ét af de finansielle håndtag du kan skrue på, er en hel eller delvis outsourcing af it-driften. I e-bogen ”Kunsten at navigere i en tilpasningsøkonomi” får du viden om, hvordan din virksomhed kan bruge tilpasningsøkonomi til at håndtere fremtidens krav til it. Vi spørger blandt andet: - Kan din virksomhed skalere og tilpasse sin digitale kapacitet og økonomi? - Har dine kunder tillid til, at du har de skarpeste it-løsninger? - Ville I kunne styrke forretningen ved at give jeres it mere fokus? - Kan I få øget funktionalitet til samme pris? Vi fokuserer på risiko, økonomi, fokus og valg af it-partner, som er fire opmærksomhedspunkter du skal have styr på for at lykkes med at tilpasse virksomheden til at modstå forandringerne i verden.