关于串口通信时,接收方要0xAABB,发送方应该怎么发送

这是在指静脉项目遇到的问题: 通信协议如下

1、这其实是接收方要的数据!!

2、发送方应该发的数据为:

 BB AA 00 01 00 08 30 30 30 30 30 30 30 30 00 00 00 00 00 00 00 00 EE 02

3、这里应该注意 BB AA 和 EE 02

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#ifndef __WD_PROTOCOL_H__ #define __WD_PROTOCOL_H__ #define SERIALPORT_BUFF_LEN (1024*100) //串口缓存 //区长1M Byte //释放内存,专用的宏 #define DELETE_OBJ(X) if(x){deletex;x=NULL;} #define DELETE_ARRAYOBJS(x) if(x){delete[]x;x=NULL;} #define CMD_SYN_WORD 0xBBAAFE6B //同步字 #define FILEDATA_LEN 1024*2 //文件数据块长度 typedef enum tagCMDTYPE { CMD_UNKNOWN =0, CMD_FILEINFO =1, CMD_FILEDATA =2, CMD_FILEEOF =3, CMD_FILEINFO_RESP =4,//响应命令 CMD_FILEDATA_RESP =5,//响应命令 CMD_FILEEOF_RESP =6 //响应命令 }CMDTYPE; typedef enum tagCMDSTATE { STATE_UNKNOWN =0, //未知状态 CMD_STATE_OK =1, CMD_STATE_ERROR =2 }CMDSTATE; //帧头-命令消息头 typedef struct tagCMDHEADER { ULONG ulSyncWord; //同步头 CMDTYPE cmdType; CMDSTATE cmdState; ULONG ulPackLen; //包长度,包括数据+校验和 }CMDHEADER; //文件信息结构体,主要发送文件名称和文件大小信息 typedef struct tagFILEINFO { CMDHEADER header; //帧头 UCHAR ucFileName[MAX_PATH]; //文件名称 ULONG ulFileNameLen; //文件名称长度 long lFileLen; //文件长度(单位:字节) ULONG ulCheckSum; //校验和 }FILEINFO; //要发送的文件数据结构体:主要是以固定大小发送文件中的数据 typedef struct tagFILEDATA { CMDHEADER header; //帧头 ULONG ulCheckSum; //校验和 UCHAR *pucBuf; //指向发送缓冲区 }FILEDATA; //文件发送结束命令 typedef struct tagFILEEOF { CMDHEADER header; ULONG ulCheckSum; UCHAR *pucBuf; }FILEEOF; typedef struct tagADDATA { UCHAR ucSyncHeader1; //同步头,0xAABB UCHAR ucSyncHeader2; //同步头,0xAABB float fChan0; //通道0 float fChan1; //通道1 float fChan2; //通道2 float fChan3; //通道3 float fChan4; //通道4 float fChan5; //通道5 float fChan6; //通道6 float fChan7; //通道7 float fChan8; //通道8 float fChan9; //通道9 float fChan10; //通道10 float fChan11; //通道11 UCHAR ucCheckSum; //校验和,前面所有数据的累加和,并取低8位 }ADDATA; ULONG CheckSum(UCHAR *pszBuf,ULONG ulBufLen) { ULONG ulCheckSum =0; for (UINT i=0;i<ulBufLen;i++) { ulCheckSum+=pszBuf[i]; } return ulCheckSum; } #endif //__WD_PROTOCOL_H__
作者:k0shl ####一些环境说明: 编译环境:Windows 10 x64 build 1607 项目IDE:VS2013 测试环境:Windows 7 x86、Windows 10 x86 build 1607 参数介绍: "-l" :开启日志记录模式(不会影响主日志记录模块) "-s" :驱动枚举模块 "-d" :打开设备驱动的名称 "-i" :待Fuzz的ioctl code,默认从0xnnnn0000-0xnnnnffff "-n" :在探测阶段采用null pointer模式,该模式下极易fuzz 到空指针引用漏洞,不加则常规探测模式 "-r" :指定明确的ioctl code范围 "-u" :只fuzz -i参数给定的ioctl code "-f" :在探测阶段采用0x00填充缓冲区 "-q" :在Fuzz阶段不显示填充input buffer的数据内容 "-e" :在探测和fuzz阶段打印错误信息(如getlasterror()) "-h" :帮助信息 ####常用Fuzz命令实例: kDriver Fuzz.exe -s 进行驱动枚举,将CreateFile成功的驱动设备名称,以及部分受限的驱动设备名称打印并写入Enum Driver.txt文件中 kDriver Fuzz.exe -d X -i 0xaabb0000 -f -l 对X驱动的ioctl code 0xaabb0000-0xaabbffff范围进行探测及对可用的ioctl code进行fuzz,探测除了正常探测外增加0x00填充缓冲区探测,开启数据日志记录(如增加-u参数,则只对ioctl code 0xaabb0000探测,若是有效ioctl code则进入fuzz阶段) kDriver Fuzz.exe -d X -r 0xaabb1122-0xaabb3344 -n -l 对X驱动的ioctl code 0xaabb1122-0xaabb3344范围内进行探测,探测采用null pointer模式,并数据日志记录
用于C/C++的繁简转头文件,可以迅速定位转换。 //*****************************说明****************************** //==========================AllCode[][]数组======================== //繁简转换编码对照数组,每6个编码为一组 //依次为Big5Unicode, GBUnicode, Big5(BE), GB(BE), Big5(LE), GB(LE) //Big5Unicode: 繁体字的Unicode编码 //GBUnicode: 简体字的Unicode编码 //Big5(BE): 繁体字的Big5编码,Big-Endian序系统用 //GB(BE): 简体字的GB编码,Big-Endian序系统用 //Big5(LE): 繁体字的Big5编码,Little-Endian序系统用 //GB(LE): 简体字的GB编码,Little-Endian序系统用 //=============================================================== //=========================CodeIndex[][]数组======================= //快速序号查找对照数组,每6个为一组 //依次为Big5Unicode, GBUnicode, Big5(BE), GB(BE), Big5(LE), GB(LE) //可以根据已知的字符编码以及字符集查找其在AllCode[]数组中的序号 //举例: //已知“华”的GB编码为0xBBAA,要转为Big5码。 //由于GB码是大字节序,那么如果在Little-Endian的系统上,其在内存中的值应该是0xAABB, //于是我们可以在CodeIndex[][]数组中找到编码为0xAABB的那一行的GB(LE)所对应的数值为9311, //然后再找到AllCode[]中序号为9311的那行数据。 //然后就可以将“华”在内存中的数据0xAABB转换为9311那一行对应的Big5(LE)编码0xD8B5 //=============================================================== //由于简体字与繁体字为一对多的关系,所以此对照方法从简体转为繁体并不是十分准确, //最好的办法是使用词库转换,但词库转换比较复杂,需要大量的词库对照。 //****************************************************************

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值