ardunio串口通信问题
先上代码这是ardunio和sim900a通信的代码
int x=1;
#define MAXCHAR 81
String comdata;
char data;
int j=0; //recive index
void setup()
{
Serial.begin(115200);
}
void loop()
{
while(x==1)
{
delay(5000);
Serial.print("AT+CSCS=\"GSM\"\r\n");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(1000);
x++;
}
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println("123"+comdata+"456");
delay(2000);
comdata = "";
}
delay(2000);
Serial.flush();
delay(2000);
}
按照代码comdata应该每次都是清空然后输出一行,但是输出的内容是:
AT+CSCS="GSM"
AT+CMGF=1
123AT+CSCS="GSM"
OK
AT+CMGF=1
OK
456
123123AT+CSCS="GSM"
OK
AT+CMGF=1
OK
456
OK
456
123123123AT+CSCS="GSM"
OK
AT+CMGF=1
OK
456
OK
456
O456
123123123123AT+CSCS="GSM"
OK
AT+CMGF=1
OK
456
OK
456
456
123123123123123AT+CSCS="GSM"
OK
AT+CMGF=1
OK
456
OK
45456
请问下是怎么回事,谢谢大神了,都困扰了一个星期了,怎么也查不出来 沒用過 sim900a, 請問 sim900a 是會直接 echo + "OK" 嗎?
如果是的話, 結果沒問題, 看來應該是 TX 接了 sim900a, 每次收到的都再送回去, 再加 OK 回傳.
發出後, 把回傳的首尾加上 "123" - "456" 再發出, 又再把回傳的加上首尾 "123" - "456"....
分別只在於第一次每行之間有 delay, 之後是一次把全部發出去.
Super169 发表于 2014-10-15 01:48 static/image/common/back.gif
沒用過 sim900a, 請問 sim900a 是會直接 echo + "OK" 嗎?
如果是的話, 結果沒問題, 看來應該是 TX 接了 s ...
sim900a接到命令会发送ok回来,但是现在不知道是在什么时候每次收到的都再送回去,这跟ardunio的串口缓存有关系么,有什么解决办法没有,,搞了好久, 没有一点头绪 DEMON_BY 发表于 2014-10-16 10:46 static/image/common/back.gif
sim900a接到命令会发送ok回来,但是现在不知道是在什么时候每次收到的都再送回去,这跟ardunio的串口缓存有 ...
如果 sim900a 只回傳 OK, 那就有點奇怪, 從給果上先, 應該是把 收到的資料回傳再加上 "OK".
可以說說你的接線嗎?會否是其他地方把要發出的資料送到 Rx 去?
Super169 发表于 2014-10-16 10:50 static/image/common/back.gif
如果 sim900a 只回傳 OK, 那就有點奇怪, 從給果上先, 應該是把 收到的資料回傳再加上 "OK".
可以說說 ...
或者先把問題簡化, 做簡單的測試, 不要把程式放入 loop 之中, 只放在 setup 最尾, 執行一次.
看看當 arduino 送出 AT+CSCS=\"GSM\"\r\n後, 會收到什麼回來.
页:
[1]