В оригинале читаться будет скорее "ывэнт", но так практически никто не пишет, иначе "ы" будет в каждом втором слове
В оригинале читаться будет скорее "ывэнт", но так практически никто не пишет, иначе "ы" будет в каждом втором слове
Код: Выделить всё
typedef enum {ST_NONE, ST_IDLE, ST_CALIBRATION, ST_NORMAL, ST_BYPASS, ST_OVERFLOW, ST_RESTORATION, ST_MAINTAINCE, ST_LAST} eState;
typedef enum {EV_NONE, EV_BTN_SHORT, EV_BTN_LONG, EV_BAT_LOW, EV_AC_SHORTAGE, EV_TIMEOUT, EV_LAST} eEvent;
Код: Выделить всё
// Run the transition based on event
eRetCode fsTransition() {
if ((state.event < EV_ANY) && (trans[state.cur_state][state.event] != NULL || trans[ST_ANY][state.event] != NULL)) {
if (trans[state.cur_state][state.event] != NULL)
state.cur_state = trans[state.cur_state][state.event](); // run the transition
else if (trans[ST_ANY][state.event] != NULL) // Catch on any state handler
state.cur_state = trans[ST_ANY][state.event]();
return RET_OK;
}
return RET_ERROR;
}
Код: Выделить всё
main.cpp
#include <Arduino.h>
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(10);
void setup()
{
}
void loop()
{
}
Код: Выделить всё
chart.cpp
#include <Arduino.h>
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X screen;
void chartInit(U8GLIB_ST7920_128X64_1X v_screen)
{
screen = v_screen;
}
void chartUint8(uint8_t v_x, uint8_t v_y, const uint8_t v_s)
{
u8g.setPrintPos(v_x, v_y);
u8g.print(v_s);
}
void chartUint8_v1(U8GLIB_ST7920_128X64_1X v_screen, uint8_t v_x, uint8_t v_y, const uint8_t v_s)
{
v_screen.setPrintPos(v_x, v_y);
v_screen.print(v_s);
}Лучше через функции доступа к ним. Инкапсуляция всё же полезна.Как правильно использовать глобальные переменныйе.
Лучше через функции доступа к ним. Инкапсуляция всё же полезна.[/uquote]Как правильно использовать глобальные переменныйе.
Код: Выделить всё
lcd.cpp
#include <Arduino.h>
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X screen;
U8GLIB_ST7920_128X64_1X getLCD()
{
return screen;
}Так всё равно. Сами-то они доступны вне модуля станут. А модуль лучше бы сделать закрытым, чтобы его состояние менять только функциями, специально для этого предназначенными.Это и так уже объекты.
И слава богу.Я может ересь ща скажу, но main не имеет заголовка.
Да. Только лучше в вашем случае либо ссылку, либо указатель возвращать. Правда, модуль отдельный для этого можно и не создавать, ограничившись созданием объекта в одном из существующих модулей.Это как? Создать модуль, в котором создать класс работы с дисплеем, в модуле сделать функцию на получение ссылки на класс и ее юзать в других модулях? Что то типа
Меня очень смущают указание на arduino и Си++ в проекте одновременно.И С++ там, неужели не видно создание объектов и вызов их методов?
Для меня - да. Я же говорю, я именно с ардуиной дел никогда не имел. И не слышал, чтобы ардуинщики, скажем, winavr запускали - строго некую arduino ide. esp-шники, например, тоже не спешат ставить SDK и Си - все практически пользуются lua, at-командами и микропитоном. Плюс некая привязка к ардуине.Ардуина на С++ написана. Это новость?