APP发数据到ESP8266这个WiFi模块数据发生错乱

原创 2017年05月16日 14:23:14

       本次开发的项目就是移动端发送数据给esp8266这个WiFi模块,是通过TCP协议的socket发送数据的,由于是刚开始做Android,经验不是很足,所以在写代码时不是很规范,下面这个问题是我测了半天才测出来的。接下来两张图片来说明一下:

第一张:


第二张:



        可以看到这两组对比数据的说明,大概意思就是我移动端发送数据(发送之前打印的)过去的是正常的,但是到了esp8266这个WiFi模块的时候数据就发生错乱了,而且发生这种情况的概率非常之高,十有八九的。


这是发送数据的sendMsg函数:

 /**
     * 发送数据
     * @param msg
     */
    public void sendMsg(byte[] msg) {
        if (client != null) {
            try {
                out.write(msg, 0, msg.length);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }


我发送数据时是这样发送的:



       TCP其他的连接和关闭没必要去管。经过我的断点调试发现,是发送出去期间出现错误的,其实我发送的数据规定是65个数据的,像上面这种直接拼接放进去发送,系统会给这个拼接完的数组一个默认的长度,我在断点测试时没有截图,这个长度在8000左右(具体多少忘了)。可以看成数组声明得太长而容易在发送期间发生错乱。


这种情况就应该给这个发送的数组定义该有的长度:

 byte[] msg = new byte[65];
        msg = ToolUtils.byteMerger(ToolUtils.DATA_HEAD, ToolUtils.acquireAllLightStateCode(getActivity()));
        animationThread.sendMsg(msg);

这样就不会发生数据错乱了

版权声明:欢迎以任何形式转载,但请注明作者和出处

Stm32-实时采集数据(温度与一氧化碳)并且通过wifi模块(Esp8266)实时传输到电脑

功能:完成温度与一氧化碳的实时采集,并且通过wifi实时传输到电脑端(使用网络助手调试),同时也可以通过串口调试 wifi作为客户端,在电脑端可通过socket方式编写程序接收数据 思...
  • qq_28796345
  • qq_28796345
  • 2017年04月30日 17:47
  • 2095

手机与ESP8266WiFi模块进行通信

  • 2016年03月31日 17:16
  • 1.56MB
  • 下载

ESP8266常见问题解答

1.为什么ESP8266 TCP透传过程会丢包? 因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。透传功能使用的是 TCP 协议,每包数据是 1460 (取决于协议栈),只要网络良好,bu...
  • iamlvshijie
  • iamlvshijie
  • 2017年02月13日 23:40
  • 4542

为什么ESP8266 TCP透传过程会丢包?8266流控原理以及如何设置

1.为什么ESP8266 TCP透传过程会丢包? 因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。 8266流控原理... 怎么给8266设置流控......
  • qq_31860135
  • qq_31860135
  • 2017年08月19日 14:02
  • 1366

Esp8266上电时IO抖动解决方案

使用芯片:Esp8266-01s 问题:此芯片在上电瞬间,GPIO0、GPIO2、RX、TX这四个引脚中的三个(在这里,我把四个IO口都设置为普通的GPIO了,也就是RX、TX也设置为GPIO)会通...
  • sxyandapp
  • sxyandapp
  • 2017年10月24日 16:13
  • 419

esp8266-SDK的串口发送和中断接收

其实用esp8266编写串口程序非常简单,因为它都给我们写好了,只要调用 uart_init(115200,115200);这个函数就可以。 1、发送 调用uart_init(115200...
  • chen244798611
  • chen244798611
  • 2016年05月21日 15:50
  • 10914

ESP8266 Android 与 Arduino 通信

原文链接:http://allaboutee.com/2015/01/20/esp8266-android-application-for-arduino-pin-control/最近开发中用到需要 ...
  • gnf_cc
  • gnf_cc
  • 2016年12月15日 10:57
  • 1392

esp8266 sprintf函数使用溢出问题

在使用ESP8266 跑freertos操作系统时,如果使用sprintf函数进行将其他数据转换成字符串格式时,如果将存储字符串的数组定义成局部数组会出现程序跑死然后重启的问题。为了避免程序跑死问题,...
  • qq_27568125
  • qq_27568125
  • 2017年02月07日 17:02
  • 341

ESP8266-从字符串中提取数值的函数

由于工作需要,通过WiFi给ESP8266传送字符串数据时,需要提取字符串里面的数值。 比如字符串:"N000000:550,550,550,550,550,1660,550,550,",需要把N00...
  • u012163234
  • u012163234
  • 2016年06月01日 15:50
  • 1945

WIFI模块ESP8266使用总结和示例

ESP8266这个模块真的很便宜,但比之前用过的各种wifi模块都难折腾。主要是很多细节说明书都没怎么提及,或者是我没看仔细。总之,本篇就根据我的使用经历来教大家如何折腾这东东。 引脚连接: GN...
  • u014563989
  • u014563989
  • 2015年05月31日 10:24
  • 24622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:APP发数据到ESP8266这个WiFi模块数据发生错乱
举报原因:
原因补充:

(最多只允许输入30个字)