【发布时间】:2014-12-15 20:31:42
【问题描述】:
对于串行端口,我很生疏。我想向连接到我的 Arduino UNO 的 GSM/GPRS 屏蔽发送 AT 命令。我特别想传递的 AT 命令是获取网络信号强度的命令。
我正在使用 SIM900 和 SoftwareSerial 库来发送命令,因为 GSM 库没有为我正确编译。这意味着我必须使用 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();
}
无论我如何修改此代码,命令都不会传入并显示响应,而此处的方法执行此操作,但不是我希望它完成的方式。即直接输入。有人可以帮忙吗?
【问题讨论】:
标签: serial-port arduino at-command