我有Arduino Leonardo和Seeedstudio GPRS Shield v2.0。他们两个都无缝地工作。 在关于主gprs shield link here的教程之后,我已成功将以下代码编译为arduino:
//Serial Relay - Arduino will patch a
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
#include <SoftwareSerial.h>
SoftwareSerial GPRS(7, 8);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0; // counter for buffer array
void setup()
{
GPRS.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the Serial port of Arduino baud rate.
}
void loop()
{
if (GPRS.available()) // if date is comming from softwareserial port ==> data is comming from gprs shield
{
while(GPRS.available()) // reading data into char array
{
buffer[count++]=GPRS.read(); // writing data into array
if(count == 64)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
clearBufferArray(); // call clearBufferArray function to clear the storaged data from the array
count = 0; // set counter of while loop to zero
}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
GPRS.write(Serial.read()); // write it to the GPRS shield
}
void clearBufferArray() // function to clear buffer array
{
for (int i=0; i<count;i++)
{ buffer[i]=NULL;} // clear all index of array with command NULL
}
上面的代码从串行输入AT命令并将其传递给gprs模块。所以,我可以键入类似:“ATD + + 1XXXXXXXX”代码来调用数字,它起作用了。问题是我无法从gprs模块序列获得响应,它只是空白之后。我读到串口终端的响应应该是:“OK”。我的问题是:
一个。我错过了什么吗?我想把回复写到终端。
湾我想发出http请求,有人有经验怎么做吗?我的意思是这个gprs开放网站blablablabla.com/cs/blabla.php?name=blabla
之前
答案 0 :(得分:0)
您的SIM900可能处于“结果代码抑制”模式。在此模式下,它只是不发送结果代码,如“确定”。
尝试向其发送“ATQ0”命令以使其发送结果代码。 (请参阅AT命令手册中的ATQ命令)。
答案 1 :(得分:0)
我绝不是这方面的专家,但...... 在任何时候我都看不到会打印或显示数据的行。
示例:
假设您在开头设置了类似变量的内容:int inByte=0
就像您buffer[count++]
或BufferArray()
一样,我有点不熟悉
然后您可以使用
检索数据Serial.println(inByte);
或
GPRS.println(inByte);
将在您的COM端口窗口中显示此信息
因此....?
之类的东西Serial.println(buffer[count++]);
或
GPRS.println(buffer[count++]);
两者都将编译BTW
答案 2 :(得分:0)
7针与莱昂纳多的例子不起作用。使用10针(需要连接导线而不是跳线)工作正常。