Показано с 1 по 10 из 435

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    50
    Сообщений
    64
    Вес репутации
    181

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    У меня работает он

    Ну в принципе если влезет в основной проект, то пускай будет , а так пока тоже особо смысла не вижу лично для своих задач.

    Вот обратную конвертацию бы еще нашел, тогда бы все вопросы решил
    Могла бы пригодиться здорово.
    Но проще будет просто вытащить кусок и сравнить...вроде пустячок а никак...
    Последний раз редактировалось igvv; 31.03.2012 в 01:26.

  2. #2
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    50
    Сообщений
    64
    Вес репутации
    181

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Попробовал поиграться (в меру сил) со string, substring тоже ничего не вышло хотя козалось бы что все верно делается.
    Это я к тому, что в том скетче моем, тоже была проблема со string, там тоже он не хотел работать из-за того, что другой(не поддерживаемый) тип данных ему давал(с запятой чтоли не помню), а string с этим типом данных не работает, поэтому пришлось усложнять дальше...какая-то-такая-то заморока была и там со стрингом.
    Все описанное ИМХО мое

  3. #3
    Новичок
    Регистрация
    29.03.2012
    Возраст
    38
    Сообщений
    9
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Сделал удобную отправку смс через Serial Monitor. Теперь задаем номер телефона и текст сообщения одной строкой.
    На скриншоте:
    1) Служебная метка sms
    2) Номер мобильника в формате pdu
    3) Текст сообщения
    Синтаксис с запятыми обязательно соблюдать.

    PHP код:
    #include <NewSoftSerial.h>
    #include <string.h>

    NewSoftSerial mySerial(23);

    #define num_to_char(number)   ((number) < 10 ?                           \
                                                   
    ('0' + (number)) :        \
                                                   ((
    'A' 10) + (number)) )

    #define first_four(byte)       (0x0F & (byte))
    #define  last_four(byte)      ((0xF0 & (byte)) >> 4)
    #define hexdump_a(byte)  num_to_char( last_four(byte))
    #define hexdump_b(byte)  num_to_char(first_four(byte))

    char inData[100];

    char unitID_in[10];
    char telnumb_in[14];
    char textsms_in[100];
    //String textsms_in;
    void setup()  
    {
      
    Serial.begin(9600);
      
    Serial.println("Go SMS Send");
      
    mySerial.begin(9600);
    }

    void loop() 

     
    int i=0
     
    char buffer[100];
    //если есть данные - читаем
      
    if(Serial.available()){
         
    delay(100);      
         
    //загоняем прочитанное в буфер
         
    while( Serial.available() && i99) {
            
    buffer[i++] = Serial.read();
         }
         
    //закрываем массив
         
    buffer[i++]='\0';
      } 
    //если буфер наполнен отправляем смс
      
    if(i>0){ 
        
    //разбераем буфер на части отделенные запятой
        
    sscanf(buffer"%[^','],%[^','],%[^',']", &unitID_in, &telnumb_in, &textsms_in);
       
        if ((String)
    unitID_in == "sms"){  //определяем команду отправки смс    
        //Serial.println(buffer); 
        
    char *indata=textsms_in;
       
    // Serial.println(textsms_in);
       // Serial.println(telnumb_in);
        
    send_sms(indata);          
        
    unitID_in [0] = '\0';
        
    telnumb_in [0] = '\0';           
        }     
      }
    }

    void send_sms(char *data)
    {
      
    size_t data_lengthx;
      
    char cl;
      
    long i;
      
    long n;
      
    data_length strlen(data);
      
    data_length 7;
      if (
    0x07= (& ~0x07) + 0x08;
      
    8
      
    mySerial.println("AT+CMGF=0");
      
    delay(50);
      
    mySerial.print("AT+CMGS=");
      
    delay(50);
      
    mySerial.println(14);
      
    delay(50);
     
    //перевернутый номер тела 19731630470F2 изменить на свой этот кусок
      //mySerial.print("0011000B919731630470F20000AA"); 
      
    mySerial.print("0011000B9");
      
    delay(5);
      
    mySerial.print(telnumb_in);
      
    delay(5);
      
    mySerial.print("0000AA");
      
    hexdump_byte(data_length 0xFF);
      
    0;
      
    0;
      for (
    0data_lengthx++)
      {
        if (
    data[x] == '$')  data[x] = 0x02;
        
    |= (data[x] & 0x7F) << l;
        
    += 7
        if (
    >= 8)
        {
          
    hexdump_byte(0xFF);
          
    -= 8;
          
    >>= 8;
        }
      } 
      if (
    != 0)
      {
        
    hexdump_byte(0xFF);
      } 
      
    mySerial.write(26);
    }
    void hexdump_byte(unsigned char byte)
    {
      
    mySerial.print(hexdump_a(byte), BYTE);
      
    mySerial.print(hexdump_b(byte), BYTE);


Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •