serialEvent в новом классе
- Войдите на сайт для отправки комментариев
Сб, 16/02/2013 - 02:57
Здравствуйте. У меня имеется вот такой класс:
class Arscom : public HardwareSerial {
public:
Arscom() : HardwareSerial(Serial){}
void welcome();
void setMouseEvent(void (*f)(byte, byte, byte));
void setQuickEvent(void (*f)(byte*, int));
private:
void (*mouseEvent)(byte, byte, byte);
void (*quickEvent)(byte*, int);
};
как мне теперь добавить в мой класс функцию serialEvent? Я хочу чтобы мой класс сам реагировал на события от сериала.
Чтото вроде такого:
void serialEvent() {
if(Serial.available()){
welcome();
}
}
Но я прекрасно знаю что так недзя, нужен объект Arscom для вызывания функции welcome().
Еслия я дапишу так:
Arscom::serialEvent() {
if(this->available()){
this->welcome();
}
}
то эта функция становится моей, т.е. объекта Arscom не будит вызвана в случае события.
Как мне быть?
Сам задал, сам отвечу. Не канает такое, функцию serialEvent нелзя запихать в свой класс.
Единственная возможнасть спрятать это всё, это создать статичекий объект Arscom в нём создать функцию каторая будит обрабатыватся в serialEvent.
Примкрно так:
#include "Arscom.h" Arscom comm = Arscom::getInstance(); ... ... ... void setup() { comm.begin(115200); comm.welcome(); comm.setInvalidEvent(invalidPack); comm.setMouseEvent(mousePackEvent); comm.setQuickEvent(quickPackEvent); comm.setStreamEvent(streamPackEvent); } void loop(){} void serialEvent() { comm.onSerialEvent(); }Только serialEvent не в стартовом классе а например в Arscom.cpp за приделом класса.