직렬 포트에 관해서는 꽤 녹슬니다. 내 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();
}
는 상관없이이 코드를 수정하는 방법, 명령에 전달되지되지 않습니다 및 응답 내가 그것을 할 수 원하는대로 여기에 방법을 수행하는 동안 표시하지만. 즉 직접 입력. 아무도 여기 도와 줄 수 없습니까?