автоматизировать отправку смс с помощью arduino? - PullRequest
0 голосов
/ 17 апреля 2020

Итак, я использую пример, который поставляется с программным обеспечением arduino, но в этом примере мне нужно вручную вводить номер телефона, на который я хочу отправлять каждый раз. Я пытался поставить номер телефона как int = "mynumber" и заменил remoteNum, но я не могу работать ..

что еще я могу попробовать?

 #include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
      notConnected = false;
    } else {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop() {

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}

Как могу ли я записать номер телефона в код, чтобы мне не приходилось вводить каждый раз вручную?

1 Ответ

1 голос
/ 17 апреля 2020

Ваш код считывает информацию из Serial и сохраняет ее в виде символьной строки и массива char:

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

Все, что вам нужно сделать, это ввести число в строку символов в коде вместо получения из серийного номера:

Serial.print("Enter a mobile number: ");
char remoteNum[20] = "15558675309";  // telephone number to send sms
Serial.println(remoteNum);

Я точно не знаю, как именно должен быть отформатирован ваш номер телефона, но вы можете посмотреть на то, что он распечатывал, чтобы увидеть, должны ли быть какие-либо тире или что-нибудь в этом.

...