极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14513|回复: 4

ardunio串口通信问题

[复制链接]
发表于 2014-10-14 20:39:28 | 显示全部楼层 |阅读模式
先上代码
这是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
请问下是怎么回事,谢谢大神了,都困扰了一个星期了,怎么也查不出来
回复

使用道具 举报

发表于 2014-10-15 01:48:23 | 显示全部楼层
沒用過 sim900a, 請問 sim900a 是會直接 echo + "OK" 嗎?
如果是的話, 結果沒問題, 看來應該是 TX 接了 sim900a, 每次收到的都再送回去, 再加 OK 回傳.
發出後, 把回傳的首尾加上 "123" - "456" 再發出, 又再把回傳的加上首尾 "123" - "456"....
分別只在於第一次每行之間有 delay, 之後是一次把全部發出去.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-16 10:46:24 | 显示全部楼层
Super169 发表于 2014-10-15 01:48
沒用過 sim900a, 請問 sim900a 是會直接 echo + "OK" 嗎?
如果是的話, 結果沒問題, 看來應該是 TX 接了 s ...

sim900a接到命令会发送ok回来,但是现在不知道是在什么时候每次收到的都再送回去,这跟ardunio的串口缓存有关系么,有什么解决办法没有,,搞了好久, 没有一点头绪
回复 支持 反对

使用道具 举报

发表于 2014-10-16 10:50:56 | 显示全部楼层
DEMON_BY 发表于 2014-10-16 10:46
sim900a接到命令会发送ok回来,但是现在不知道是在什么时候每次收到的都再送回去,这跟ardunio的串口缓存有 ...


如果 sim900a 只回傳 OK, 那就有點奇怪, 從給果上先, 應該是把 收到的資料回傳再加上 "OK".

可以說說你的接線嗎?  會否是其他地方把要發出的資料送到 Rx 去?
回复 支持 反对

使用道具 举报

发表于 2014-10-16 10:53:18 | 显示全部楼层
Super169 发表于 2014-10-16 10:50
如果 sim900a 只回傳 OK, 那就有點奇怪, 從給果上先, 應該是把 收到的資料回傳再加上 "OK".

可以說說 ...


或者先把問題簡化, 做簡單的測試, 不要把程式放入 loop 之中, 只放在 setup 最尾, 執行一次.

看看當 arduino 送出 AT+CSCS=\"GSM\"\r\n  後, 會收到什麼回來.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 14:42 , Processed in 0.036073 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表