首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么截取数据,多谢大家了

2012-03-22 
【求助】如何截取数据,谢谢大家了在读串口数据的时候,如果在自己想要的数据截取下来呢?比如在实时读取这么其

【求助】如何截取数据,谢谢大家了
在读串口数据的时候,如果在自己想要的数据截取下来呢?

比如在实时读取这么其中一段数据: "00 22 33 EE D1 00 73 45 90 D2 99 97 41 70 D3 00 02 19 10 FF 33 25 45 00"

我想却D1后面的数据(00 73 45 90),D2后面的数据(99 97 41 70),D3后面的数据(00 02 19 10),其它都数据都不要。

[解决办法]

C/C++ code
unsigned char d1[ 0x10 ] = { 0xd1 };uhsigned char *p = ( unsigned char * )接收的数据;while( 0xd1 != *p )     p++;}p++;unsigned char *d1_offset = *pwhile( 0xd2 != *p )     p++;}int d1_len = ( int )( p - offset );
[解决办法]
在读串口数据的时候,如果在自己想要的数据截取下来呢?
是二进制数据吧,看看你的通信约定,定义一结构
看你的数据
 “00 22 33 EE D1 00 73 45 90 D2 99 97 41 70 D3 00 02 19 10 FF 33 25 45 00”
00 22 33 EE 应该是报头
D1 00 73 45 90 数据
D2 99 97 41 70 数据
D3 00 02 19 10 数据
FF 33 25 45 00 报头尾数据

估计你的通信应该是这样,根据报头能指出 数据部分有几个
可以这么操作,一定三个结构 报头 数据 报尾
//报头
typedef __HEAD
{
BYTE a;
BYTE b;
BYTE c;
BYTE d;
} HEAD;
//数据
typedef __DATA
 { 
unsigned flag[1];
BTYPE data[4] ;
} DATA;
//报尾
typedef __TRAIL
 {
unsigned flag[1];
BYTE traildata[4];
} TRAIL;
然后对数据进行操作。

热点排行