用arduino自动发送短信?

时间:2020-04-17 19:58:04

标签: arduino gsm

因此,即时通讯使用的是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 个答案:

答案 0 :(得分:1)

您的代码从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);

我不确定这是电话号码的格式,但是您可以查看打印出来的内容,看看其中是否应包含破折号或其他任何内容。

相关问题