2017-12-13 1 views
0

GSM 발신자 번호 수신기를 코딩하려고합니다. (전화 응답자로서) 전화를 받으면 발신자 번호가 인쇄됩니다.Arduino SIM800C GSM 방패에서 발신자 번호를받는 방법?

발신자 번호를 수신하기위한 올바른 AT 명령을 찾는 데 문제가 있습니다. 나는 AT+CLIP=1\r과 루프 +CLIP을 시도했지만 성공하지 못했습니다. 여기

내 코드입니다 : 내가 mySerial를 사용하여 작업이있어 ​​

#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

(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); 



} 
관련 문제