scott817 发表于 2015-12-21 23:56:13

关于arduino get网络数据控制LED等,不成功,获取的串口数据是255 191 223等

我是用UNO 连接HLK-RM04 访问网络数据以控制RGB LED。因为是刚接触arduino,所以就参考了不少案例。 目前是使用如下代码测试 http://my.oschina.net/matol/blog/529803?fromerr=zsqU6iMC

http://115.29.47.98:8080/huaduo/blogs/list/9      使用此代码除了get地址 其他都没变的情况下   串口模拟器输出都是乱码。但是看YOUKU视频 里面 作者使用没有问题作者的IDE是1.0.5而我使用的是1.6.6。


目前我根据情况调整了不部分代码显示结果如图



RM04的配置如图用串口助手测试RM04模块,能收发数据。


搜索资料说用serial.write但是IDE提示不能编译。   

我使用的代码如下(因为UNO,所以使用了SoftwareSerial,最早担心是软串口的问题) 请各位帮忙看看,
mySerial.println("GET /led/1234.html HTTP/1.1");内容就几个数字。比如777,333,1111等。

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
String comdata = "";
int redPin = 7;
int greenPin = 6;
int bluePin = 5;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(115200);
mySerial.begin(115200);
while (!Serial) {}
}
void loop()
{
if (mySerial.available() > 0) {
    comdata = mySerial.read();
    //comdata += char(mySerial.read());
    Serial.println(comdata);
    // Serial.println(comdata);
    //comdata = "";
    comdata.trim();
    if (comdata.length() > 0) {
      if (comdata.toInt() >= 255) { //is number
      setColor(0, 255, 0);//绿色
      } else {
      setColor(0, 0, 255);//蓝色tColor(255, 0, 0);//红色
      }
      //Serial.println("[" + comdata + "]");
    } else {
      setColor(255, 255, 0);//黄色 网络故障
    }
}
getHttp();
}
void getHttp() {
mySerial.println("GET /led/1234.txt HTTP/1.1"); // HTTP/1.1 HTTP协议名称
delay(100);
}
void setColor(int red, int green, int blue)
{
analogWrite(redPin, 255 - red);
analogWrite(greenPin, 255 - green);
analogWrite(bluePin, 255 - blue);
}

darkorigin 发表于 2015-12-24 09:47:14

IDE版本不同,很多代码存在兼容性问题
比如0.8版的很多函数 直接被1.0不认。。。这已经出现过的。。。
SO 。。。要么改代码 要么找老版本。。。

编译不通过,说明代码未通过IDE的检查。。。可能是代码不规范、兼容性问题,,也可能是库文件不全等情况。
编译通过不能按预想执行,要么是代码逻辑不对,要么就是硬件或者其他外部条件不满足,比如硬件不匹配等,当然 硬件质量不过关也可能导致此类问题。

scott817 发表于 2015-12-24 14:22:23

darkorigin 发表于 2015-12-24 09:47 static/image/common/back.gif
IDE版本不同,很多代码存在兼容性问题
比如0.8版的很多函数 直接被1.0不认。。。这已经出现过的。。。
S ...

编译没问题。只是奇怪,用串口助手直接访问模块 能正确收发数据。 一到uno(mega)上串口监视器看到的数据就不对了, 比如我的web上的数据是1024,uno上串口接收到的是 171 255 之类的反复数值。

darkorigin 发表于 2015-12-25 00:13:33

scott817 发表于 2015-12-24 14:22 static/image/common/back.gif
编译没问题。只是奇怪,用串口助手直接访问模块 能正确收发数据。 一到uno(mega)上串口监视器看到的 ...

接口?波特率等参数看看?
还有就是是不是有逻辑错误。。

photoliao 发表于 2016-7-22 16:55:21

你好,请问你问题解决了吗?
我也遇到了相关的问题

LOVE_KE 发表于 2016-7-23 00:03:16

把波特率都改成 9600 不要用115200 :lol

LOVE_KE 发表于 2016-7-23 00:04:42

LOVE_KE 发表于 2016-7-23 00:03 static/image/common/back.gif
把波特率都改成 9600 不要用115200

软串口不稳定 降低波特率会好点 加油 少年们!!!
页: [1]
查看完整版本: 关于arduino get网络数据控制LED等,不成功,获取的串口数据是255 191 223等