esp8266关于数据接收!!!
esp8266 在AP模式下接收数据,串口读出的数据中带有+IPD,模块固件中加上的,有没有办法去掉???现在在进行bin文件的接收,我要解析出原始二进制文件,IPD没法去掉,有没有朋友做过,求助!!!!
看一下规律,写个上位机C程序随便去呗
或者用ultraedit等工具软件,直接替换掉;只填写被替换掉的数据,新的数据保持为空,就相当于删除操作。 你的bin文件数据没有进行拆封包处理吗,那么你如何判断数据是否完整或者正确无误?如果你有这些操作,模块给你加什么数据都没影响。 toofree 发表于 2018-2-7 10:02
看一下规律,写个上位机C程序随便去呗
或者用ultraedit等工具软件,直接替换掉;只填写被替换掉的数据,新 ...
不管发送什么数据,是8266给加上的IPD信息,只能放到嵌入式端 衔胆栖冰 发表于 2018-2-7 10:40
你的bin文件数据没有进行拆封包处理吗,那么你如何判断数据是否完整或者正确无误?如果你有这些操作,模块 ...
自己添加的协议,同时加了校验,来保证数据完整性和准确性!
mcu和8266通过串口通信,我接收到的是8266处理后的数据,已经加上ipd信息,我首先要去除掉!
这个+IPD应该是固定的格式,收到的每包数据把这个过滤掉不就ok了吗,应该很好过滤吧 很多模块都是这样的,加IPD是为了告诉我们有数据接收到了。不然你怎么确定是不是正确的数据呢? andeyqi 发表于 2018-2-7 15:10
这个+IPD应该是固定的格式,收到的每包数据把这个过滤掉不就ok了吗,应该很好过滤吧 ...
二进制文件里面,不是很好过滤呢! 安 发表于 2018-2-7 15:17
很多模块都是这样的,加IPD是为了告诉我们有数据接收到了。不然你怎么确定是不是正确的数据呢? ...
通过加协议来验证吧!就是加了IPD,其实也不能保证用户数据的完整性和准确性! 很好过滤的。
给个例子:
#include <string.h>
//================================================================
//查找指定字符串在另一字符串中的位置
//输入参数:
//src 输入源
//des 要查找的数组的起始位置
//bGetEnd查找长度
//输出参数:
// -1,输入数据无效
// 0, 没有找到数据
//0以上,表示找到数据的位置
//================================================================
int mystrstr( char * src, char * des ,char bGetEnd )
{
char * i;
int ret=0;
int ret1=0;
if(( *src == 0) || ( *des == 0 ) )
{
return -1; //输入的数据无效
}
i =strstr(src,des); //调用系统函数strstr,查找指定字符串在另一字符串中的位置
if( i == 0 ){
return 0; //没有找到数据
}
ret = i - src;
if( bGetEnd!=0){ //如果 bGetEnd ==1,则返回包含 des字符串长度 的数据
ret1 = strlen(des); //调用系统函数strlen,计算字符串的长度
ret += ret1;
}
return ret; //如果 bGetEnd ==0,则返回 des字符串起始位置 的数据
}
int main()
{
char pUART_Buf[]={"+IPD,0,10:1234567"}; //这是固有数据+字符串
char pGet_Buf={0}; //用来保存提取出来的字符串
char sFindString[]={":"}; //这是要查找和字符
int ret;
ret = mystrstr ( (char *)&pUART_Buf ,(char *)&sFindString ,11 );
//10为字符串 "+IPD,0,xx:"的长度
//内存块比较 pUART_Buf 等于sFindString,返回值就=0
//使用memcmp函数,要先引用: <string.h>
memcpy( (char *) &pGet_Buf ,(char *) &pUART_Buf , (strlen(pUART_Buf) - ret) );
//先引用 "string.h"
//用法:memcpy( 目标数组 , 源数组 ,截取的长度 )
//(strlen(pUART_Buf) - ret) ,计算出需要的数组的长度
//这样,就可以提取到 1234567 这样的字符串了。
return 0;
}
页:
[1]
2