起始字节 字段 数据类型 描述及要求
0 消息ID + 厂家ID WORD 前2位1--80为消息ID;后3位1--999为厂家ID
2 设备编号+流水号 DWORD 前4位1--5000为设备编号;后6位1--999999为流水号
6 消息体数据长度 WORD 红色的那个描述看起来似乎是10进制数值?
0 消息ID + 厂家ID WORD 前2位1--80为消息ID;后3位1--999为厂家ID
2 设备编号+流水号 DWORD 前4位1--5000为设备编号;后6位1--999999为流水号
6 消息体数据长度 WORD 红色的那个描述看起来似乎是10进制数值?
解决方案 »
- MFC 视图分割
- 请教socket练不上
- error C2440谁明白,给讲讲,谢谢了!
- 我想给一个listbox添加一个多选的属性,应该怎么添加啊!
- int AFXAPI AfxMessageBox 中 AFXAPI 到底指的是什么啊?
- 请求Win32 SDK 高手救我一命!
- 难题!!!—网页ActiveX控件如何写客户端文件???
- ADO访问奇怪问题,做这个程序半年了,前所未见,我都不知道该如何说!
- 装载jpg、gif等使用OLELoadPicturePath(...) 的问题,使用CBitmap的问题
- 如何取中文与字母字符串中的字!?
- windows shell 右键菜单学习问题(win7 x64急求助)
- 求助 mfc 连接操作 Adaptive Server Anywhere 数据库的问题
开了几分钟还是没看明白...起始字节 字段 数据类型 描述及要求
0 消息ID + 厂家ID WORD 前2位1--80为消息ID;后3位1--999为厂家ID
2 设备编号+流水号 DWORD 前4位1--5000为设备编号;后6位1--999999为流水号
6 消息体数据长度 WORD你无论按10进制取位也不对,按2进制取位也不对WORD 1~65535,如果按10进制取位,则前2位最高只有65,后3位只有535,根本不可能达到要求
DWORD 1~4294967295,前4位最高只有4294,后6位只有967295
如果按2进制取位就更加没可能了,2位最高只能表示3、3位最高只能表示7、4位最高表示15、6位最高63做程序一般都要按理论最高数据测试,写这结构体的人有没有做过峰值测试?
如果按照定义,当数据达到理论最高缝制,则第一个成员 80999 ,第二个成员 5000999999
系统一般会将数值自动截断然后赋值,那不出错就有鬼了当然如果我理解错或者最高值永远不会达到定义中所说的值的话就另当别论了~至于你想用结构体来表示,看消息头及校验码的定义,没有考虑字节对齐
消息头中已有一个“消息体数据长度”的定义了,结束符就可以省略了
由于消息体是可变长数据,那么结构体就不会有一个明确的定义,只有一个除消息体以外的结构struct XXXX {
WORD w1;
DWORD dw1;
WORD w2;
BYTE byte1;
char data[1];
};
取高6位表示 0 - 63 加低位余数可以表示 0-86 (还多6)!
取低10位表示0-1023 减1000 的余数加到 高6位.
共可以表示 0-1086