Официальный сайт компании Arduino по адресу arduino.cc
Выкладывайте код. Скорее всего проблема в изменениях.
все процедуры в монитор порта, но номер вроде как не сохраняется...
#include <EEPROM.h> uint8_t ch = 0; String val = ""; // переменная для хранения приходящих строк из модема. byte NumT = 0; //номер ячейки массива byte KolMas = 10; //количество ячеек массива byte Adress[10] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}; //занимаем сотню ячеек для десяти номеров char Temp[11] = ""; //массив на один символ больше из-за проблемы с нулем в конце строки при команде readBytes char TelE[11] = ""; //номер из ЕЕПРОМ char TelZero[11] = "0000000000"; //для обнуления номера void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { while (Serial.available()) { ch = Serial.read(); val += char(ch); delay(20); } Serial.println(val); ConsolePrint(); val = ""; } } void ConsolePrint() { if(val.indexOf(F("ring:")) > -1) { ring(val.substring(5, 16)); } if(val.indexOf(F("nomera:")) > -1) { for (byte i=0; i<10; i++) { TelE[i] = EEPROM.read(Adress[NumT]+i); //считываем побайтово номер телефона Serial.println(TelE[i] + i); // Serial.println(Adress[NumT]+i); } //во временную переменную } if(val.indexOf(F("dellnomer:")) > -1) { } if(val.indexOf(F("change:")) > -1) { } if(val.indexOf(F("clear:")) > -1) { for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } } } int ring (String num) { Serial.println(num); num.toCharArray(Temp, 11); while (NumT <= KolMas) { //ищем телефон в массиве for (byte i=0; i<10; i++) { TelE[i] = EEPROM.read(Adress[NumT]+i); //считываем побайтово номер телефона } //во временную переменную if (strstr(TelE, Temp)) { //если находим for (byte i=0; i<10; i++) { //очищаем телефон в ЕЕПРОМ EEPROM.write(Adress[NumT]+i, TelZero[i]); } NumT=0; //сбрасываем счетчик break; //выходим из цикла } else { //если не находим телефон NumT++; //переходим к следующему телефону //пока не дойдем до конца списков номеров if (NumT == KolMas) { //дошли до конца списков номеров NumT = 0; //сбрасываем счетчик while (NumT < KolMas) { //начинаем искать пустую ячейку if (strstr(TelE, TelZero)) {//если находим for (byte i=0; i<10; i++) { //записываем телефон в ЕЕПРОМ EEPROM.write(Adress[NumT]+i, Temp[i]); } break; //выходим из цикла } else { //если не находим NumT++; //следующий номер } } NumT = 0; //сбрасываем счетчик Temp[0] = 0; //очистить переменную Temp TelE[0] = 0; //очистить переменную TelE break; //выходим из цикла } } } }
в мониторе порта пишет
команда ring:
ring:9111234567 9111234567
команда nomera:
nomera: 48 49 50 51 52 53 54 55 56 57
как:
1. прочитать номера всех ячеек, "nomera:"
2. удалить номер по адресу 2, "dellnomer:"
3. заменить номер по адресу 3, "change:'
вообщем сделал по своему, ссылка: http://arduino.ru/forum/proekty/gsm-signalizatsiya-m590arduino?page=2#comment-278852
Извини, занят был.
Это хорошо, что сам нашел свой подход. Так держать!
Почитал твой код. Проблема тут:
if (strstr(TelE, Temp)) { //если находим for (byte i=0; i<10; i++) { //очищаем телефон в ЕЕПРОМ EEPROM.write(Adress[NumT]+i, TelZero[i]); }
У тебя получается, при входящем, если номер есть уже в памяти, стирается из памяти.
А у меня он стирал только при нажатой кнопке.
да, спасибо.
Выкладывайте код. Скорее всего проблема в изменениях.
все процедуры в монитор порта, но номер вроде как не сохраняется...
в мониторе порта пишет
команда ring:
команда nomera:
как:
1. прочитать номера всех ячеек, "nomera:"
2. удалить номер по адресу 2, "dellnomer:"
3. заменить номер по адресу 3, "change:'
вообщем сделал по своему, ссылка: http://arduino.ru/forum/proekty/gsm-signalizatsiya-m590arduino?page=2#comment-278852
Извини, занят был.
Это хорошо, что сам нашел свой подход. Так держать!
Почитал твой код. Проблема тут:
У тебя получается, при входящем, если номер есть уже в памяти, стирается из памяти.
А у меня он стирал только при нажатой кнопке.
Извини, занят был.
Это хорошо, что сам нашел свой подход. Так держать!
Почитал твой код. Проблема тут:
У тебя получается, при входящем, если номер есть уже в памяти, стирается из памяти.
А у меня он стирал только при нажатой кнопке.
да, спасибо.