簡體   English   中英

從 Arduino 庫中的方法獲取私有 bool 屬性

[英]Getting private bool property from method in Arduino library

我正在 arduino 中創建自己的庫來控制泵。 該庫非常簡單:


泵.h

#ifndef Pump_h
#define Pump_h

#include "Arduino.h"

class Pump
{
  public:
    Pump(int pin);
    void Open(void);
    void Close(void);
    boolean IsOpen(void);
  private:
    int _pin;
    bool _status;
};

#endif

泵.cpp


#include "Arduino.h"
#include "Pump.h"

Pump::Pump(int pin)
{
  pinMode(pin, OUTPUT);
  digitalWrite(pin,HIGH);
  _pin = pin;
  _status = false;
}

void Pump::Open(void)
{
  digitalWrite(_pin, LOW);
  _status = true;
}

void Pump::Close(void)
{
  digitalWrite(_pin, HIGH);
  _status = false;
}

boolean Pump::IsOpen(void)
{
  return _status;
}

環形()


#include <Pump.h>
#define PUMP1 Pump(9)

void loop() {
  BridgeClient client = server.accept(); // Get clients coming from server
  if (client) {  // There is a new request from client?
    Console.println("Client connected");
    process(client);  // Process request
    client.stop();    // Close connection and free resources.
  }
  Console.println(PUMP1.IsOpen());
  delay(50); // Poll every 50ms
}

問題是,當我在 Arduino 的 loop() 函數中調用函數 IsOpen 時,我總是錯誤,並且泵會立即關閉。 我的代碼有什么問題?

您的PUMP1.IsOpen()只是創建一個Pump類的臨時對象,該對象會立即被銷毀。

您需要創建一個在程序執行過程中一直存在的Pump對象。 我不熟悉 Arduino 調用流程,但您可以通過一些初始化/設置方法或使用單例設計或為這個簡單的用例創建一個Pump的全局對象(我通常不教育人們並且反對使用這樣的設計)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM