DEMON_BY 发表于 2014-10-4 10:47:58

ardunio uno和sim900a通信问题

我把ardunio的rx和sim900a的tx接,tx和rx接,然后ardunio写入如下代码
String comdata = "";
void setup(){
Serial.begin(115200);
}
void loop(){
Serial.println("AT");
while (Serial.available() > 0)
    {
      comdata += char(Serial.read());
      delay(2);
    }
    if (comdata.length() > 0)
    {
      Serial.println(comdata);
      comdata = "";
    }
}
然后串口就是只有-1返回、
请问这是怎么回事。。

i7456 发表于 2014-10-4 12:47:42

如果不知道问题出在哪里,在电脑上用串口调试工具看看,发出AT指令时,返回的字符串是什么

毛驴 发表于 2014-10-4 15:05:57

sim900a就没有at这条指令,你去网上下一个sim900a的at指令集看看就知道了,比如说AT+CMGR=1这样的才行。

DEMON_BY 发表于 2014-10-4 20:30:22

i7456 发表于 2014-10-4 12:47 static/image/common/back.gif
如果不知道问题出在哪里,在电脑上用串口调试工具看看,发出AT指令时,返回的字符串是什么

我用的ardunio ide里面的串口看的,sim900a的串口是直接连到ardunio上的啊,是不是我连线连得不对啊

DEMON_BY 发表于 2014-10-4 20:32:08

毛驴 发表于 2014-10-4 15:05 static/image/common/back.gif
sim900a就没有at这条指令,你去网上下一个sim900a的at指令集看看就知道了,比如说AT+CMGR=1这样的才行。

有啊,如果直接把sim900a串口插到电脑上,发送AT就能返回ok,我有个问题,我看ardunio的串口的波特率都是9600的,但是sim900a的串口别的波特率是115200的,换成别的就乱码,所以你觉得会不会是这方面的问题

毛驴 发表于 2014-10-4 20:41:29

不是吧,我sim900a用的就是9600,不管多少,设置的波特率和串口监视器上的要一致,另外你试试其他的命令,如果你用的是Uno的话,不能用serial2这种命令。

DEMON_BY 发表于 2014-10-4 21:04:42

毛驴 发表于 2014-10-4 20:41 static/image/common/back.gif
不是吧,我sim900a用的就是9600,不管多少,设置的波特率和串口监视器上的要一致,另外你试试其他的命令,如 ...

等下试试9600,如果我只用sim900a的话,用的是sscom的串口工具,等下看下,你用的是uno的板子么

毛驴 发表于 2014-10-4 21:27:53

主要用的是mega 2560,Uno也用过

茗嗳§矜de缕 发表于 2014-11-5 11:00:13

DEMON_BY,问题解决没,SIM900可以更改波特率的,此外SIM900模块和arduino板子需共地连接,TX->RX,RX->TX;

茗嗳§矜de缕 发表于 2014-11-5 11:04:28

发射AT命令后,最后加段延时,还有就是:comdata += char(Serial.read());这句代码是不是有问题哦,Serial.read()函数返回的本身就是char型的,comdata是string型,这个表达式能否得到你想要的“OK”呢?

long1225cn 发表于 2015-2-10 14:58:08

DEMON_BY 发表于 2014-10-4 20:32 static/image/common/back.gif
有啊,如果直接把sim900a串口插到电脑上,发送AT就能返回ok,我有个问题,我看ardunio的串口的波特率都是 ...

sim900a波特率是可以使用AT命令设置的,还用你用arduino的一个串口跟sim900a通信,还要它在电脑上显示给你看,它不干的,232是点对点通信,不能点对两点通信的,代码也有问题的哦!
页: [1]
查看完整版本: ardunio uno和sim900a通信问题