別のライブラリSoftwareSerialを使用するライブラリに入れたいコードがいくつかあります。ここで、SoftwareSerial.h および SoftwareSerial.cpp ファイルを、作成中のライブラリと同じフォルダーに追加しました。
私のヘッダーファイルは次のようになります。
#ifndef MyLibrary_h
#define MyLibrary_h
#include "Arduino.h"
#include "SoftwareSerial.h"
#define MyLibrary_VERSION 1 // software version of this library
//DEFINE ALL CLASS VARIABLES
#define DATA_BUFFER_SIZE 50 //soft serial has 63 byte buffer.
class MyLibrary
{
public:
MyLibrary(uint8_t port_in, uint8_t port_out);
float getSomeValue(uint8_t some_index);
private:
SoftwareSerial _serial;
//Not sure if I should add the constructors below to the above declaration.
//(uint8_t in_pin=4, uint8_t out_pin=5, bool logic_reversed = false);
float convertSomeValue(byte upperbyte, byte lowerbyte);
void flushSerialBuffer();
};
#endif
私の .cpp ファイルは次のようになります。
#include "Arduino.h"
#include "MyLibrary.h"
#include "SoftwareSerial.h"
MyLibrary::MyLibrary(uint8_t in_pin, uint8_t out_pin)
{
bool logic_reversed = false;
this->_serial(in_pin*, out_pin*, logic_reversed);
//I tried the declaration below as well.
//SoftwareSerial _serial(in_pin*, out_pin*, logic_reversed);
}
float MyLibrary::getSomeValue(uint8_t sensor_index) {
float someValue = 1.1;
return someValue;
}
float MyLibrary::convertSome(byte upperbyte, byte lowerbyte) {
float someValue = 0.9;
return someValue;
}
void MyLibrary::flushSerialBuffer() {
//Flush serial buffer
while(_serial.available())
char c = _serial.read();
}
SoftwareSerialを MyLibrary のプライベート フィールドにしたいのですが (できれば static ですが、必須ではありません)、多くのことを宣言してみましたが、何も機能していないようです。no matching function for call to 'SoftwareSerial::SoftwareSerial()
またはのようなエラーが発生し続けinvalid use of qualified-name 'MyLibrary::_serial'
ます。
static SoftwareSerial _serial;
.h ファイルとSoftwareSerial MyLibrary::_serial(4,5,false);
.cpp ファイルの先頭で宣言することで、一度コンパイルできました。問題は、MyLibrary のコンストラクターでポートを設定し_serial
(SoftwareSerial の特定の入出力ピンを使用する MyLibrary を作成できるようにするため)、.cpp ファイルの先頭で明示的に宣言しないようにしたいということです。
私は C コーディングと Arduino にあまり詳しくないので、.h ファイルでこれらを適切に宣言し、MyLibrary コンストラクターまたは MyLibrary.begin で正しいポートを使用してそれらをインスタンス化する方法を誰かが説明してくれれば、非常に助かります。 () 関数 (またはそのようなもの)。
有益なコメントをお寄せいただきありがとうございます。