Arduino和ESP8266-01s串口通信发送结构体的问题

在尝试使用Arduino通过ESP8266-01s将结构体数据转换为字节流并发送到服务器时,遇到接收端数据乱码的问题。虽然湿度数据正确,但其他部分无法正确解析。对串口通信进行回声测试后,发现只有首次回传正确,后续数据存在规律但仍有乱码。去除ESP8266延时并在Arduino端增加一秒延时后,通信恢复正常,但问题原因尚不明确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arduino和ESP8266-01s串口通信发送结构体的问题

是这样的,在用arduino采集的数据通过ESP8266发送至服务器(本来是结构体数据,转化为字节流发送),结果发现服务器收到数据还原成结构体后都是乱码,只有结构体中湿度(int)是正确的。ESP直接发送给服务器数据也是正确的。由此感觉应该是Arduino和ESP8266串口通信时出错,遂写了个回声测试程序,结果还真是乱码,但也不是全乱,只有第一次回传结果是正确的,后面也有一些规律,但是还是找不到问题。。。请问有知道怎么回事的吗?

我把esp8266的延时去掉了,arduino延时一秒又正常了。但还是不解什么原因


//ESP8266

#define SERIAL_RX_BUFFER_SIZE 480
#define SERIAL_TX_BUFFER_SIZE 480

struct send_msg {
  int type;//发送信息的类型 arduino发送的链接信息 5请求登录 6发送监测数据
  int tem;//现在的温度
  int hum;//现在的湿度  
  int angle;//舵机角度
  bool isAnyone;//是否有人在
  bool Fire;//火
  bool Smog;//烟雾
  //  int Smog_date;
  bool Duoji;//舵机

  bool Hot;//制热机开关
  bool Cold;//制冷机开关
  bool Fan;//风扇开关
  char c = '\n';
};//24bytes


byte recv_buf[300];


void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  
}

int num
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值