arduino+esp8266-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3083|回复: 4

arduino+esp8266

[复制链接]
发表于 2020-11-5 19:32 | 显示全部楼层 |阅读模式
通过过串口给esp8266发送数据,但是后面总是跟着一段乱码,大佬们帮看下这是什么原因导致的,有啥靠谱的解决方法

代码贴在这里
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

#define WIFI_SSID         "lyq"
#define WIFI_PASSWD       "01234567890"
#define MQTT_SERVER     "file:///C:\Users\ASUS\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png121.89.187.31"

#define MQTT_PORT         1883
#define MQTT_USRNAME      "18b20"
#define CLIENT_ID         "18b20_001"
#define MQTT_PASSWD       "123456"

#define ALINK_BODY_FORMAT         "%s"
#define ALINK_TOPIC_PROP_POST     "/18b20"
#define temperature_topic "temp"
unsigned long i = 0, lastMs = 0;
WiFiClient espClient;
PubSubClient  client(espClient);

void wifiInit()
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(WIFI_SSID, WIFI_PASSWD);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(1000);
        Serial.println("WiFi not Connect");
    }

    Serial.println("Connected to AP");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    Serial.print("espClient [");
    client.setServer(MQTT_SERVER, MQTT_PORT);
}

void mqttCheckConnect()
{
    while (!client.connected())
    {
        Serial.println("Connecting to MQTT Server ...");
        if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD))

        {
            Serial.println("MQTT Connected!");
        }
        else
        {
            Serial.print("MQTT Connect err:");
            Serial.println(client.state());
            delay(5000);
        }
    }
}


void data_recieve_post()
{
  char a[30]; //定义字符数组,接受来自上位机的数据
  char c[30];
  int i = 0;
  while (!Serial.available()); //等待数据传送过来,若没有数据,一直等待,即执行到本行不向下执行
  while (Serial.available()) //当发现缓存中有数据时,将数据送至字符数组a中
  {
    a = Serial.read();
    i++;
    delay(10);   
  }
  sprintf(c, ALINK_BODY_FORMAT, a);
  client.publish(temperature_topic, c);
  Serial.println(c);
}
void setup()
{
    pinMode(4,INPUT_PULLUP);
    Serial.begin(115200);
    wifiInit();
}

void loop()
{  
    if (millis() - lastMs >= 500)
    {
        lastMs = millis();
        mqttCheckConnect();
        data_recieve_post();
    }
    client.loop();
}



图错误的界面


esp8266.png
发表于 2020-11-5 22:14 | 显示全部楼层
乱码就意味着可能是不是中文。。。
 楼主| 发表于 2020-11-8 10:38 | 显示全部楼层
单片机菜鸟 发表于 2020-11-5 22:14
乱码就意味着可能是不是中文。。。

嗯嗯,确实不是中文。我只想让她接收到我发送的那一条,但是每次发送完成后总会接着在后面跟一段乱码,我的程序中并没有设置在接收后输出什么东西,但是总是莫名其妙的跟一段,大佬有啥好的解决方法吗
发表于 2020-11-11 11:15 | 显示全部楼层
发线接线图
发表于 2020-11-11 11:19 | 显示全部楼层
我觉得你还是先要搞清楚字符串,字符,ASCII码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:43 , Processed in 0.080644 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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