关于ESP8266串口输出中文时出现乱码的解决方案

关于ESP8266串口输出中文时出现乱码的解决方案

前言

本人之前并没有c语言的项目编程经验,第一次使用ESP8266以及Eclipse编程环境,因此犯了诸多新手会犯的错误,但在网上查找相关问题时发现许多初级错误并不能完整的找到解决办法,因此希望将个人踩过的坑分享出来,如果有初学者遇到类似问题可以得到较快解决方案。

一、问题描述

日前,本人在学习8266时发现,串口输出的中文会出现乱码问题

二、原因查找

由于初学原因,什么问题都不懂,于是在网上查资料发现可能是硬件、波特率、或者汉字编码问题。但本人使用硬件为成品模组,故排除硬件连接问题,而英文正常显示,因此判断波特率并未出现问题。

确定是编码问题后,查资料发现可能是因为开发环境中的文件编码出现问题,而安信可串口调试助手只支持GBK格式显示,于是换用支持UTF-8的串口助手后发现中文正常显示,联想到之前弹出过什么“Save as UTF-8”的选项后更加确定了该想法。

该情况出现原因:大概率是由于复制了UTF-8格式的程序及注释,导致保存失败。而失败后对话框会询问是否将编码格式变为UTF-8,点击后就会出现该问题。

将乱码复制到转码网站发现问题的确如此,原文为UTF-8格式,安信可串口助手里的乱码是GBK格式。

乱码恢复网站:
http://www.mytju.com/classcode/tools/messyCodeRecover.asp

但通过相关(如下贴)帖子的方法查看Eelipse中的相关设置后发现,设置均为默认,并未能解决问题。

解决Eclipse中文乱码问题:
https://blog.csdn.net/qq_45697630/article/details/115382382

三、问题解决

方法一:

尝试很多次后,终于明白,只是user_main.c文件的编码出现了问题。

解决办法为:右击user_main.c > Properites > Resource> Text file encoding,选择编码格式为Default(括号里面懒得打了,)即可。但进行该操作后原文件中的所有中文就会变为乱码。因此需要重新输入。可结合方法2使用。

出问题原因:在这里插入图片描述

方法二:

根据该帖方法:

STC51和STM32使用串口输出中文乱码问题解决
https://blog.csdn.net/qq_40242571/article/details/117842182

1.Windows中找到该.c文件;

在这里插入图片描述

2.选择记事本打开;
3.选择另存为;
4.修改编码格式为ASCI ;

在这里插入图片描述

5.将另存为的文件替换掉原文件;
6.Eclipse中对项目refresh即可。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 阿里云与ESP8266串口调试出现"MqttDisconnected: 0"的错误通常是由于以下原因引起的: 1. 服务器连接问题:首先,请确保您的ESP8266设备已正确连接到阿里云的MQTT服务器。您可以检查设备的Wi-Fi连接是否正常,并且确保您的阿里云MQTT服务器的地址、端口以及连接凭证(如用户名和密码)配置正确。 2. 设备证书问题:阿里云MQTT服务器通常需要设备使用正确的证书进行身份验证。请确保您的设备已正确安装证书,并将其正确配置在ESP8266上。检查证书是否过期或无效,并确保您的设备凭证与阿里云后台配置的凭证相匹配。 3. 客户端ID问题:每个设备在与阿里云MQTT服务器进行通信,需要有唯一的客户端ID作为身份标识。确保您的ESP8266已设置正确的客户端ID,并且该ID在阿里云后台唯一且有效。 4. 网络连接问题:如果您的设备与阿里云MQTT服务器之间的网络连接不稳定或中断,则可能会导致"MqttDisconnected: 0"错误。检查设备与Wi-Fi路由器之间的距离和信号强度,并确保网络连接稳定。 5. 代码问题:最后,请检查您的ESP8266代码实现是否正确。确保您在代码中正确连接到阿里云服务器,并处理可能的异常情况,如网络连接断开等。 如果您仍然无法解决"MqttDisconnected: 0"的问题,请查阅ESP8266和阿里云官方文档,了解更多关于错误代码的含义和解决方案。 ### 回答2: 阿里云与ESP8266串口调试出现"MqttDisconnected:0"错误提示是因为MQTT连接断开了。 这个问题常见于以下几种情况: 1. 服务器端掉线:首先,请确保阿里云MQTT服务器是否正常工作。检查服务器是否存在故障或网络连接问题。 2. 网络故障:检查网络连接是否正常。确保ESP8266模块与阿里云服务器之间的网络连接是稳定的。 3. 未正确配置MQTT连接参数:请确保你的程序中正确设置了阿里云MQTT服务器的地址、端口号、用户名和密码等参数。 4. MQTT心跳超:检查程序中设置的心跳周期是否过短,并根据需要调整为合理的数值。当长间没有数据传输,阿里云服务器会主动断开与设备的连接。 5. 服务器配置错误:检查阿里云服务器的配置是否正确。例如,可以尝试重新配置服务器端项目,检查是否有错误的配置项导致了连接断开。 解决该问题的方法包括: 1. 检查以上可能出现的原因,并逐一排查是否存在问题。 2. 确保网络连接正常,确保服务器端正常工作。 3. 检查程序中的配置参数是否正确,并根据需要进行调整。 4. 调整心跳周期,确保心跳发送频率适当。 5. 如仍不能解决问题,建议参考阿里云MQTT文档、ESP8266相关文档和论坛等资源,寻找更全面的解决方案。 希望以上内容能对您解决问题有所帮助。如有进一步疑问,请继续追问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值