2014-12-15 2 views
0

직렬 포트에 관해서는 꽤 녹슬니다. 내 Arduino UNO에 연결된 GSM/GPRS 방패로 AT 명령을 보내려고합니다. 특별히 전달하고자하는 AT 명령은 네트워크 신호 강도를 얻는 명령입니다.GSM/GPRS로 AT 명령을 보내고 시리얼 모니터에 회신을 표시합니다.

GSM 라이브러리가 올바르게 컴파일되지 않아서 SIM900 및 SoftwareSerial 라이브러리를 사용하여 명령을 보내고 있습니다. 의미 나는 SoftwareSerial 라이브러리를 사용해야합니다.

이 예제 코드는 명령을 수행하기 위해 직렬 모니터에서 입력을 읽는 것에 의존하는 SIM900 라이브러리에서 가져 왔지만 자동화되어 있어야하고 명령을 하드 코드로 전달해야합니다. 이 예제 코드에서 관심 장소는 simplehwread() 메소드입니다.

#include "SIM900.h" 
#include <SoftwareSerial.h> 

int numdata; 
char inSerial[40]; 
int i=0; 

void setup() 
{ 
    //Serial connection. 
    Serial.begin(9600); 
    Serial.println("GSM Shield testing."); 
    //Start configuration of shield with baudrate. 
    //For http uses is raccomanded to use 4800 or slower. 
    if (gsm.begin(9600)) 
      Serial.println("\nstatus=READY"); 
    else Serial.println("\nstatus=IDLE"); 
}; 

void loop() 
{ 
    //Read for new byte on serial hardware, 
    //and write them on NewSoftSerial. 
    serialhwread(); 
    //Read for new byte on NewSoftSerial. 
    serialswread(); 
}; 

void serialhwread() 
{ 
    i=0; 
    if (Serial.available() > 0) { 
      while (Serial.available() > 0) { 
       inSerial[i]=(Serial.read()); 
       delay(10); 
       i++; 
      } 

      inSerial[i]='\0'; 
      if(!strcmp(inSerial,"/END")) { 
       Serial.println("_"); 
       inSerial[0]=0x1a; 
       inSerial[1]='\0'; 
       gsm.SimpleWriteln(inSerial); 
      } 
      //Send a saved AT command using serial port. 
      if(!strcmp(inSerial,"TEST")) { 
       Serial.println("SIGNAL QUALITY"); 
       gsm.SimpleWriteln("AT+CSQ"); 
      } else { 
       Serial.println(inSerial); 
       gsm.SimpleWriteln(inSerial); 
      } 
      inSerial[0]='\0'; 
    } 
} 

void serialswread() 
{ 
    gsm.SimpleRead(); 
} 

는 상관없이이 코드를 수정하는 방법, 명령에 전달되지되지 않습니다 및 응답 내가 그것을 할 수 원하는대로 여기에 방법을 수행하는 동안 표시하지만. 즉 직접 입력. 아무도 여기 도와 줄 수 없습니까?

답변

1

나는 셀룰러 라디오를 탑재 한 회사에서이 시나리오를 정확히 처리했습니다. 오는 많은 상태 신호가 있고 적절하게 처리되지 않으면 셀 모뎀의 상태 플래그가 손실됩니다

셀 모뎀과 해당 프로토콜과 관련된 데이터 시트를보고 어떤 플래그가 필요한지 알 필요가 있습니다 구성에서부터 셀룰러 서비스로의 최종 연결에 이르기까지 다양한 단계에서 살펴보십시오.

멀티 스레드 코딩 기술도 준수해야합니다.

통신 채널이 이상적이지 않으며 오류가 발생한다는 것을 명심하십시오. 코딩 기술이 적절하고 프로토콜 요구 사항을 따르는 경우, 작동해야합니다.

론 보이즈, ID