'MATI' was not declared in this scope
- Войдите на сайт для отправки комментариев
Пт, 04/10/2019 - 22:39
Доброго времени суток! Решил собрать sms-контроллер для управления 4-мя реле. Нашел готовый код, но при компиляции выдает ошибку 'MATI' was not declared in this scope. В коде попытался поправить синтаксис, но чет не получается (( подскажите на пальцах что делаю не так.
Собственно код:
#include <bluetooth.h> #include <fm.h> #include <gprs.h> #include <sim800.h> #define TIMEOUT 5000 #define ACTIVE LOW #define OFF HIGH byte Relay[] = {A0,A1,A2,A3}; byte StatRelay[4]; char buffNumber[20]; char currentLine[500] = ""; int currentLineIndex = 0; bool nextLineIsMessage = false; String replyNumber = "79266000000"; GPRS gprs; void setup() { for(int i=0; i < 4; i++) { pinMode (Relay[i] , OUTPUT); digitalWrite (Relay[i], MATI); StatRelay[i] = MATI; } Serial.begin(9600); while (!Serial); Serial.println("Activate SIM800L V2 >>> Automatically Read SMS"); gprs.preInit(); delay(1000); while (0 != gprs.init()) { delay(1000); Serial.print("init errorrn"); } // Manage message to mode ASCII if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) { ERROR("ERROR:CNMI"); return; } // Read Incoming SMS if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) { ERROR("ERROR:CNMI"); return; } int pjg = replyNumber.length() + 1; buffNumber[pjg]; replyNumber.toCharArray(buffNumber,pjg); Serial.print("Send reply to number = > "); Serial.println(buffNumber); Serial.println("Initialization Done"); Serial.println("============================================================="); } void loop() { // Change status Relay ON / OFF for(int i=0; i < 4; i++) { digitalWrite(Relay[i], StatRelay[i]); } // If there is input data from SIM800 if (gprs.serialSIM800.available()) { char lastCharRead = gprs.serialSIM800.read(); // Save all data on lastCharRead, then if there is r or n, as a final signal of incoming message if (lastCharRead == 'r' || lastCharRead == 'n') { String lastLine = String(currentLine); // If the last message +CMT indicates new message arrive if (lastLine.startsWith("+CMT:")) { Serial.println(lastLine); nextLineIsMessage = true; } else if (lastLine.length() > 0) { if (nextLineIsMessage) { Serial.println(lastLine); // ================================================================>> Function of Relay Controller //Relay 1 Controller if (lastLine.indexOf("Relay 1 ON") >= 0) { StatRelay[0] = AKTIF; Serial.print("Reply====>>>> "); Serial.println("Relay 1 Status Active"); gprs.sendSMS (buffNumber, "Relay 1 Status Active"); } else if (lastLine.indexOf("Relay 1 OFF") >= 0) { State Relay[0] = MATI; Serial.print("Reply====>>>> "); Serial.println("Relay 1 Status Off"); gprs.sendSMS (buffNumber, "Relay 1 Status Off"); } //Relay 2 Controller if (lastLine.indexOf("Relay 2 ON") >= 0) { State Relay[1] = AKTIF; Serial.print("Reply====>>>> "); Serial.println("Relay 2 Status Active"); gprs.sendSMS (buffNumber, "Relay 2 Status Active"); } else if (lastLine.indexOf("Relay 2 OFF") >= 0) { State Relay[1] = MATI; Serial.print("Reply====>>>> "); Serial.println("Relay 2 Status Off"); gprs.sendSMS (buffNumber, "Relay 2 Status Off"); } //Relay 3 Controller if (lastLine.indexOf("Relay 3 ON") >= 0) { StatRelay[2] = AKTIF; Serial.print("Reply====>>>> "); Serial.println("Relay 3 Status Active"); gprs.sendSMS (buffNumber, "Relay 3 Status Active"); } else if (lastLine.indexOf("Relay 3 OFF") >= 0) { State Relay[2] = MATI; Serial.print("Reply====>>>> "); Serial.println("Relay 3 Status Off"); gprs.sendSMS (buffNumber, "Relay 3 Status Off"); } //Relay 4 Controller if (lastLine.indexOf("Relay 4 ON") >= 0) { State Relay[3] = AKTIF; Serial.print("Reply====>>>> "); Serial.println("Relay 4 Status Active"); gprs.sendSMS (buffNumber, "Relay 1 Status Active"); } else if (lastLine.indexOf("Relay 4 OFF") >= 0) { State Relay[3] = MATI; Serial.print("Reply====>>>> "); Serial.println("Relay 4 Status Off"); gprs.sendSMS (buffNumber, "Relay 4 Status Off"); } nextLineIsMessage = false; } // ==================================================================>> } //Clear char array for next line of read for ( int i = 0; i < sizeof(currentLine); ++i ) { currentLine[i] = (char)0; } currentLineIndex = 0; } else { currentLine[currentLineIndex++] = lastCharRead; } } }
А что автор кода говорит?
Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!
Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!
не берусь утверждать, но мне кажется, что кто-то пытался поправить код и не понимая, что делает как минимум забыл про строки 8 и 10... т.е. впихнул не туда :))))))))
Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!
Почти согласен (только HIGH и LOW наоборот, видимо, управление реле "инверсное" ), сдаётся мне, что достаточно в строках 8 и 10 поменять ACTIVE на AKTIF , а MATI на OFF.
Недостаточно... см. левую часть выражения на строке #200, например.
OFF на MATI)
Заменил statrelay на state relay.
Заменил statrelay на state relay.
Молодец!
Да уже сообразил что накосячил. Но странно, на эти «исправленные» строки ide больше не ругался. Почему?
Не успевает.
ТС, а ты хоть читал, что тебе писали? Или просто методом «дай угадаю» действуешь?
Это кому сообщение?
Ага. Хто тут?
Это кому сообщение?
А кто тему открыл? Дед? Тогда ему...
Я- нет, не открывал. Вроде.
Вы, дружище, остроумны! Прочитайте первый пост, пожалуйста!
Вы, дружище, остроумны! Прочитайте первый пост, пожалуйста!
а вы, похоже, не очень... остры умом.
Перечитайте всю тему, вам написали в чем дело - а вы пишете в ответ какую-то чушь.
Подскажите, где я написал чушь? Я терпеливо ожидал советов, от знающих людей. Всё что мне советовали буду пробывать. Всё остальные замечания оставьте своим друзьям.
Подскажите, где я написал чушь?
вот:
>> Заменил statrelay на state relay.
Как раз другу я может и помягче бы сказал, а вас не жалко. Почему мне не написать, что вы тупите - если вы и вправду тупите. Не нравится читать о себе такое - не тупите.
Подскажите, где я написал чушь?
вот:
>> Заменил statrelay на state relay.
Как раз другу я может и помягче бы сказал, а вас не жалко. Почему мне не написать, что вы тупите - если вы и вправду тупите. Не нравится читать о себе такое - не тупите.
В сообщение я признал ошибку, и не надо меня носом тыкать.
Если Вам нравится нравоучить, идите в другие темы. А здесь я попросил помощи! Нормальные люди указали мне ошибки.
ну так перечитайте тему и исправить, то что уже описано, при необходимости продолжим.