2017-12-13 21 views
0

私はGSM発信者番号受信機をコーディングしようとしています。私(電話の回答者)が電話に応答すると、発信者番号が印刷されます。Arduino SIM800C GSMシールドから発信者番号を受け取る方法は?

発信者番号を受け取るための正しいATコマンドを見つけることができません。私はAT+CLIP=1\rとループ+CLIPを試しましたが、成功しませんでした。ここで

私のコードされています

#include <GSMSim.h> 
#include <SoftwareSerial.h> 

#define RX 7 
#define TX 8 
#define RESET 2 
#define BAUD 9600 

GSMSim gsm; 
SoftwareSerial mySerial = SoftwareSerial(RX, TX); 
/* 
* Also you can this types: 
* GSMSim gsm(RX, TX); 
* GSMSim gsm(RX, TX, RESET); 
* GSMSim gsm(RX, TX, RESET, LED_PIN, LED_FLAG); 
*/ 

void setup() { 
    Serial.begin(9600); 
    Serial.println("GSMSim Library - Call Example"); 
    Serial.println(""); 
    delay(1000); 

    gsm.start(); // baud default 9600 
    mySerial.read(); 
    mySerial.print("AT+CLIP=1\r"); 
} 

void loop() { 
    Serial.println(gsm.callStatus()); 
    gsm.callAnswer(); 
    Serial.println("Number:"); 
    Serial.println(mySerial.print("+CLIP")); 
    delay(1000); 
} 
+1

'Serial.println(mySerial.print(「+ CLIP」));' – dda

+0

...あなたはそれがないと思う何をしません誰かが質問を投稿していないとき、私はちょうどそれを愛しますコメントに反応してください...既成の解決策を待っているなら、あなたは長い間待っています。 – dda

+0

ヒント: 'size_t Print :: print(const char str [])'。 'print'は何を返すのでしょうか? – dda

答えて

0

私はそれはmySerial、(ATDevice)を使用して作業してしまった機能を読み、accualyそれをプリントアウトするためのコマンド機能を使用して、それがどのように機能するかを調べます誰、ここに私はですコード

#include <GSMSim.h> 
#include <SoftwareSerial.h> 
#include <string.h> 



#define RX 7 
#define TX 8 
#define RESET 2 
#define BAUD 9600 

char outArray; 
char inData[20]; 
char inChar=-1; 
byte index = 0; 
char * pch; 
char* substring(char*, int, int); 

GSMSim gsm; 
    SoftwareSerial ATDevice = SoftwareSerial(RX, TX); 
/* 
* Also you can this types: 
* GSMSim gsm(RX, TX); 
* GSMSim gsm(RX, TX, RESET); 
* GSMSim gsm(RX, TX, RESET, LED_PIN, LED_FLAG); 
*/ 

void setup() { 
    // put your setup code here, to run once: 

    Serial.begin(9600); 
    ATDevice.begin(9600); 

    command("AT+CLIP=1",1000); 
    delay(1000); 


} 


    String command(const char *toSend, unsigned long milliseconds) { 
    String result; 
    ATDevice.println(toSend); 
    unsigned long startTime = millis(); 
    Serial.print("Return: "); 
    while (millis() - startTime < milliseconds) { 
     if (ATDevice.available()) { 
     char c = ATDevice.read(); 
     result += c; // append to the result string 
     } 
    } 
    Serial.println(); // new line after timeout. 
    return result; 
    } 


void loop() { 

     command("+CLIP",1000); 



    delay(2000); 



} 
関連する問題