Добрый день.
Подскажите, почему не верно работает код?
У меня есть функция, которая мне возвращает строку. Мне это необходимо, чтобы в дальнейшем при помощи регулярных выражений её прочитать и вывести в программе.
1. Если в функции Parse_Msg в блоке «case 1:» использовать строку «Message = Macros (NumberOfMistakes, 0);», а в блоке «case 2:» такая же строка закомментирована, то все работает корректно, строка собирается полностью (<Message_1> Ворота открыты </1_Message>)
2. Если в функции Parse_Msg в блоке «case 1:» использовать строку «Message = Macros (NumberOfMistakes, 0);», а в блоке «case 2:» такая же строка не закомментирована, строка собирается не корректно (<Message_1></1_Message>)
Подскажите, почему не верно работает код?
У меня есть функция, которая мне возвращает строку. Мне это необходимо, чтобы в дальнейшем при помощи регулярных выражений её прочитать и вывести в программе.
1. Если в функции Parse_Msg в блоке «case 1:» использовать строку «Message = Macros (NumberOfMistakes, 0);», а в блоке «case 2:» такая же строка закомментирована, то все работает корректно, строка собирается полностью (<Message_1> Ворота открыты </1_Message>)
2. Если в функции Parse_Msg в блоке «case 1:» использовать строку «Message = Macros (NumberOfMistakes, 0);», а в блоке «case 2:» такая же строка не закомментирована, строка собирается не корректно (<Message_1></1_Message>)
C++:
#define FPSTR(pstr) (const __FlashStringHelper*)(pstr) // Преобразование PGM-строк
const char Msg_1[] PROGMEM = "Ворота открыты";
const char Msg_2[] PROGMEM = "Ворота закрыты";
const char Msg_3[] PROGMEM = "Нет связи с пультом";
const char Msg_4[] PROGMEM = "Отсутствие обратной связи с мотором";
const char Msg_5[] PROGMEM = "Ворота открыты не полностью";
const char Msg_6[] PROGMEM = "Ворота закрыты не полностью";
const char Msg_7[] PROGMEM = "Включение световой индикации";
const char Msg_8[] PROGMEM = "Световая индикация выключена";
const char* const Msg_OK[] PROGMEM = { Msg_1, Msg_2, Msg_3, Msg_4, Msg_5, Msg_6, Msg_7, Msg_8 };
uint8_t NumberOfMistakes = 0; // Количество сообщений
String Macros(int _NumberOfMistakes, int _NumberOfArray){
String _Message = "";
_Message = ("<Message_");
_Message += (_NumberOfMistakes);
_Message += (">");
_Message += FPSTR(Msg_OK[_NumberOfArray]);
_Message += ("</");
_Message += (_NumberOfMistakes);
_Message += ("_Message>");
return _Message;
}
void Parse_Msg(uint8_t Msg) {
String Message = "";
switch (Msg) {
case 1:
NumberOfMistakes += 1;
Message = Macros (NumberOfMistakes, 0);
break;
case 2:
NumberOfMistakes += 1;
Message = Macros (NumberOfMistakes, 1);
break;
//default:
//Serial.println("СООБЩЕНИЙ НЕТ");
}