Молодец...
Буду пробовать завтра....если все пойдет классные возможности у этого всего будут.
Молодец...
Буду пробовать завтра....если все пойдет классные возможности у этого всего будут.
metaforos Если не трудно погляди что у меня неправильно
пробовал разные варианты. По экрану телефона вижу что ардуина считывает смс из памяти, но обработать и включить пин 5 не выходит, ну и соответственно стирать тоже не хочет смс из памяти. Скорее всего адреса строк пишу неправильно, но как правильно то???
Поставил строку Serial.println(strok[52]); чтоб понять значение strok[52] ...но значение выводится закорючкой!!!!PHP код:
#include <NewSoftSerial.h> //////////// поставить библиотеку сериал
NewSoftSerial mySerial(2,3);
int i=1;
char strok[61]="";
int ledpin = 5; //////////// изменить ледпин на другой
long previousMillis = 0;
long interval = 5000;
void setup()
{
pinMode(ledpin, OUTPUT);
//Serial1.begin(9600); /////// изменить на другой сериал
mySerial.begin(9600);
Serial.begin(9600);
//Serial1.flush(); /////// изменить ?????????
mySerial.flush();
delay(5000);
//Serial1.println("AT+CPMS ='MT'\r" ); /////// ИЗМЕНИТЬ
mySerial.println("AT+CPMS ='MT'\r" );
delay(1000);
//Serial1.println("AT+CNMI=1,1\r"); ////// изменить
mySerial.println("AT+CNMI=1,1\r");
delay(1000);
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
//Serial1.println("AT+CMGL=4\r"); ///////// изменить
mySerial.println("AT+CMGL=4\r");
delay(100);
}
//if(Serial1.read()=='0' &&Serial1.read()=='7' &&Serial1.read()=='9') /////ИЗМЕНИТЬ .....только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
if(mySerial.read()=='0' &&mySerial.read()=='7' &&mySerial.read()=='9')
{
//for (i=1; i<58; i++) strok[i] = Serial1.read(); ////// ИЗМЕНИТЬ
//for (i=1; i<58; i++) strok[i] = mySerial.read();
for (i=1; i<60; i++) strok[i] = mySerial.read();
// ВКЛЮЧЕНИЕ - отправляю СМС - #a1
//if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
//if(strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
if(strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '7' &&strok[58] == '0')
{
digitalWrite (ledpin, HIGH);
delay(1000);
//Serial1.println("AT+CMGD=1"); /////// ИЗМЕНИТЬ
mySerial.println("AT+CMGD=1");
}
// ВЫКЛЮЧЕНИЕ - отправляю СМС - #a0
//if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '3' &&strok[55] == '0')
//if(strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '3' &&strok[55] == '0')
if(strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '3' &&strok[58] == '0')
{
digitalWrite (ledpin, LOW);
delay(1000);
//Serial1.println("AT+CMGD=1"); /////// ИЗМЕНИТЬ
mySerial.println("AT+CMGD=1");
}
}
delay(100);
}
//0 7 9 1 9 7 6 1 9 8 9 9 0 1 F 0 2 4 0 B 9 1 9 7 6 1 4 6 4 3 3 9 F 2 0 0 0 0 2 1 4 0 5 0 7 1 9 4 6 1 6 1 0 3 A 3 7 0 0 C - #a1
//1 2 3 4 5 6 7 8 9 10 15 20 25 30 35 40 45 50 55 60
//0 7 9 1 9 7 6 1 9 8 9 9 0 1 F 0 2 4 0 B 9 1 9 7 6 1 4 6 4 3 3 9 F 2 0 0 0 0 2 1 4 0 5 0 8 1 0 2 4 1 6 1 0 3 A 3 3 0 0 C - #a0
// - - - - -
Последний раз редактировалось igvv; 05.04.2012 в 21:33.
Я не пойму, зачем ты менял мои
иPHP код:
for (i=1; i<60; i++) strok[i] = mySerial.read();
Они одинаково будут работать для любого оператора и номера телефона. Я ведь присваиваю не с 1-го символа (0), а с 4-го (1), а ты все перепутал.PHP код:
if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
Здесь -- я взял 61 для "надежности", т.к. приходит 60 символов.PHP код:
char strok[61]="";
Последний раз редактировалось metaforos; 05.04.2012 в 22:56.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
У меня в конце скетча примеры приходящих смс, там так
6 1 0 3 A 3 7 0 ... единица по счету 52-я и начало не на 2 а на 6!
Сейчас еще раз проверю все сначала.
Попробовал по всякому ...ни выходит
for (i=1; i<58; i++) strok[i] = mySerial.read();
if(strok[48] == '2' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
и
if(strok[48] == '6' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
и
if(strok[51] == '6' &&strok[52] == '1' &&strok[53] == '0' &&strok[54] == '3' &&strok[55] == 'A' &&strok[56] == '3' &&strok[57] == '7' &&strok[58] == '0')
Посмотри мою строчку #a1 приходящую
//0 7 9 1 9 7 6 1 9 8 9 9 0 1 F 0 2 4 0 B 9 1 9 7 6 1 4 6 4 3 3 9 F 2 0 0 0 0 2 1 4 0 5 0 7 1 9 4 6 1 6 1 0 3 A 3 7 0 0 C
Я не врублюсь где в скетче сдвиг на 4 происходит ... я уже и со сдвигом попробовал и без, даже и не знаю что теперь делать
metaforos попробуй скетч с библиотекой NewSoftSerial может это уже действительно из-за неё
Последний раз редактировалось igvv; 06.04.2012 в 00:34.
Тогда вместо 2 в :
поставь свою 6PHP код:
if(strok[48] == [COLOR="red"]'2'[/COLOR] &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
А здвиг вот как происходит - Нам приходит 60 символов:PHP код:
if(strok[48] == [COLOR="Red"]'6'[/COLOR] &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
07919761989901F0240B919761464339F20000214050714616103A 3700C
В таком виде, твоя 6-ка, будет strok[51]. Но! Первые 3 символа (079), мы используем вТеперь у нас для чтения, остается только 57 символов и 1-м символом идет 1, тогда твоя 6-ка, это уже 51-3=48 и т.д. до 55 символа.PHP код:
if(Serial1.read()=='0' &&Serial1.read()=='7' &&Serial1.read()=='9') // только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
А по поводу NewSoftSerial, пробовать даже не буду. Она у меня не работает. Попробуй подключи на 0 и 1 и просто напиши Serial.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
я уже пробовал так, выше постом писал!
if(strok[48] == '6' &&strok[49] == '1' &&strok[50] == '0' &&strok[51] == '3' &&strok[52] == 'A' &&strok[53] == '3' &&strok[54] == '7' &&strok[55] == '0')
Поправь свой предыдущий скетч пожалуйста там где фигурные скобки надо было подправить... я сейчас с ним играюсь
Выходат так:PHP код:
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2,3);
int i=1;
char strok[61]="";
int ledpin = 5;
long previousMillis = 0;
long interval = 5000;
void setup()
{
pinMode(ledpin, OUTPUT);
mySerial.begin(9600);
Serial.begin(9600);
mySerial.flush();
delay(5000);
mySerial.println("AT+CPMS ='MT'\r" );
delay(1000);
mySerial.println("AT+CNMI=1,1\r");
delay(1000);
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
mySerial.println("AT+CMGL=4\r");
delay(100);
}
// отправляю СМС - #a1
if(mySerial.read()=='0' &&mySerial.read()=='7'&&mySerial.read()=='9') //только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
{
for (i=1; i<58; i++) strok [i] = mySerial.read();
Serial.print(strok[48]); // 2
Serial.println(strok[49]); // 1
//Serial.println(strok[50]); // 0
//Serial.print(strok[51]); // 3
//Serial.print(strok[52]); // A
//Serial.print(strok[53]); // 3
//Serial.print(strok[54]); // 7
//Serial.print(strok[55]); // 0
digitalWrite (ledpin, HIGH);
delay(3000);
digitalWrite (ledpin, LOW);
delay(10000);
}
}
A3
**
**
**
A3
**
*
**
Вместо * закарючка
У меня к сожалению через Serial на 0 и 1 не пошло ничего, телефон теряет сеть и все(ПРАВДА СМСку успевает прочесть-в прочитанные в телефоне уходит) ... если так не разберусь то тогда буду пробовать.
Завтра LCD экран подключу ...посмотрю что strok[48] - [55] у меня выводит.
Последний раз редактировалось igvv; 06.04.2012 в 03:11.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)