你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

esp8266关于数据接收!!!

[复制链接]
lihan519 提问时间:2018-2-7 09:38 /
       esp8266 在AP模式下接收数据,串口读出的数据中带有+IPD,模块固件中加上的,有没有办法去掉???


        现在在进行bin文件的接收,我要解析出原始二进制文件,IPD没法去掉,有没有朋友做过,求助!!!!



收藏 评论11 发布时间:2018-2-7 09:38

举报

11个回答
toofree 回答时间:2018-2-7 10:02:15
看一下规律,写个上位机C程序随便去呗
或者用ultraedit等工具软件,直接替换掉;只填写被替换掉的数据,新的数据保持为空,就相当于删除操作。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

衔胆栖冰 回答时间:2018-2-7 10:40:05
你的bin文件数据没有进行拆封包处理吗,那么你如何判断数据是否完整或者正确无误?如果你有这些操作,模块给你加什么数据都没影响。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

lihan519 回答时间:2018-2-7 11:29:38
toofree 发表于 2018-2-7 10:02
看一下规律,写个上位机C程序随便去呗
或者用ultraedit等工具软件,直接替换掉;只填写被替换掉的数据,新 ...

不管发送什么数据,是8266给加上的IPD信息,只能放到嵌入式端
lihan519 回答时间:2018-2-7 11:32:14
衔胆栖冰 发表于 2018-2-7 10:40
你的bin文件数据没有进行拆封包处理吗,那么你如何判断数据是否完整或者正确无误?如果你有这些操作,模块 ...

自己添加的协议,同时加了校验,来保证数据完整性和准确性!
mcu和8266通过串口通信,我接收到的是8266处理后的数据,已经加上ipd信息,我首先要去除掉!
andeyqi 回答时间:2018-2-7 15:10:01
这个+IPD应该是固定的格式,收到的每包数据把这个过滤掉不就ok了吗,应该很好过滤吧

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回答时间:2018-2-7 15:17:44
很多模块都是这样的,加IPD是为了告诉我们有数据接收到了。不然你怎么确定是不是正确的数据呢?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

lihan519 回答时间:2018-2-8 10:35:11
andeyqi 发表于 2018-2-7 15:10
这个+IPD应该是固定的格式,收到的每包数据把这个过滤掉不就ok了吗,应该很好过滤吧 ...

二进制文件里面,不是很好过滤呢!
lihan519 回答时间:2018-2-8 10:36:31
安 发表于 2018-2-7 15:17
很多模块都是这样的,加IPD是为了告诉我们有数据接收到了。不然你怎么确定是不是正确的数据呢? ...

通过加协议来验证吧!就是加了IPD,其实也不能保证用户数据的完整性和准确性!
无薪税绵 回答时间:2018-3-7 16:00:56
很好过滤的。
给个例子:

  1. #include <string.h>
  2. //================================================================
  3. //查找指定字符串在另一字符串中的位置
  4. //输入参数:
  5. //src      输入源
  6. //des      要查找的数组的起始位置
  7. //bGetEnd  查找长度
  8. //输出参数:
  9. // -1,输入数据无效
  10. // 0, 没有找到数据
  11. //0以上,表示找到数据的位置
  12. //================================================================
  13. int mystrstr( char * src, char * des ,char bGetEnd )
  14. {
  15.         char * i;
  16.         int ret=0;
  17.         int ret1=0;
  18.         if(( *src == 0) || ( *des == 0 ) )
  19.         {
  20.                 return -1;                                        //输入的数据无效
  21.         }
  22.         i =strstr(src,des);                                //调用系统函数strstr,查找指定字符串在另一字符串中的位置
  23.         if( i == 0 ){
  24.                 return 0;                                        //没有找到数据
  25.         }
  26.         ret = i - src;
  27.         if( bGetEnd!=0){                                //如果 bGetEnd ==1,则返回包含 des字符串长度 的数据
  28.                 ret1 = strlen(des);                        //调用系统函数strlen,计算字符串的长度
  29.                 ret += ret1;
  30.         }
  31.         return ret;                                                //如果 bGetEnd ==0,则返回 des字符串起始位置 的数据
  32. }


  33. int main()
  34. {
  35.         char pUART_Buf[]={"+IPD,0,10:1234567"}; //这是固有数据+字符串
  36.         char pGet_Buf[100]={0};                                        //用来保存提取出来的字符串
  37.         char sFindString[]={":"};                                //这是要查找和字符
  38.         int ret;

  39.         ret = mystrstr ( (char *)&pUART_Buf ,(char *)&sFindString ,11 );
  40.         //10为字符串 "+IPD,0,xx:"的长度
  41.         //内存块比较 pUART_Buf 等于sFindString,返回值就=0               
  42.         //使用memcmp函数,要先引用: <string.h>

  43.         memcpy( (char *) &pGet_Buf ,(char *) &pUART_Buf[ret] , (strlen(pUART_Buf) - ret) );
  44.         //先引用 "string.h"
  45.         //用法:memcpy( 目标数组 , 源数组 ,截取的长度 )
  46.         //(strlen(pUART_Buf) - ret) ,计算出需要的数组的长度
  47.         //这样,就可以提取到 1234567 这样的字符串了。

  48.         return 0;
  49. }
复制代码

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版