【发布时间】:2013-11-01 15:04:40
【问题描述】:
目标:通过SoftwareSerial/Arduino向移远M95(GSM2 Click http://www.mikroe.com/click/gsm2/)提交AT指令并解析响应;没有 Arduino GSM 库。
现状:能够通过终端以各种波特率(9600 - 115200)与 M95 完全通信。可以提交 AT 命令并显示所需的结果代码。我尝试过使用不同的调制解调器(DroneCell),结果相同。所有接线已检查 10 次并验证正确。如果我通过 SoftwareSerial 提交 AT 命令,我知道调制解调器正在接收数据,因为我可以发送 SMS、启动 GPRS 等;就是无法得到有效的响应。
问题:Arduino 无法使用以下代码读取 GSM 模块响应。结果是乱码文本/字符 - 可变且不可预测。提交 AT 命令“AT”时的预期响应是“OK”。
图片:
通过终端成功:
Arduino 回应:
#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
SoftwareSerial mySerial(rxPin,txPin); // RX, TX
void setup(){
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600);
Serial.println("Arduino serial initialized!");
delay(10);
mySerial.begin(9600);
Serial.println("Software serial initialized!");
delay(10);
}
void loop(){
issueCommand("AT");
readSerial();
delay(500);
while(true){
readSerial();
}
}
void issueCommand(char* msg){
mySerial.println(msg);
Serial.print(msg);
delay(10);
}
void readSerial(){
while (mySerial.available()){
Serial.write(mySerial.read());
delay(10);
}
}
【问题讨论】:
-
我认为您应该等待(循环)直到收到对“AT”的响应,然后才继续发送更多命令。
-
你用的是哪个arduino?
-
我正在使用最新版本的 Arduinoi:UNO。
标签: terminal serial-port arduino gsm