📄 subject_58248.htm
字号:
<p>
序号:58248 发表者:狂战士 发表日期:2003-10-30 23:05:32
<br>主题:请看关于提取数据出现的问题!
<br>内容:void CHEXDlg::OnButton1() <BR>{ <BR>BYTE bt[] = {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,<BR> 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,<BR> 0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,<BR> 0x80,0x80,0x00,0x00,0x80,0x00,0x50,0x41,0x53,0x53,0xE0,0xAE,0x06,0x01,0x07,0xD0,<BR> 0x07,0x01,0x01,0x02,0x2B,0x27,0x03,0xEF,0xC0};<BR> int num1=(short)(*((unsigned short*)bt+59));<BR> int num2=(char)(*(bt+62));<BR> int num3=(char)(*(bt+63));<BR> int num4=(char)(*(bt+64));<BR> int num5=(char)(*(bt+65));<BR> int num6=(char)(*(bt+66));<BR> m_MSG1.Format("具体数据是:%d,%d,%d,%d,%d,%d",num1,num2,num3,num4,num5,num6);<BR> UpdateData(FALSE);<BR>}<BR>bt数组里的内容是从串口接收来的,其中有用的是"0x01,0x07,0xD0, 0x07,0x01,0x01,0x02,0x2B,0x27,0x03,0xEF,0xC0"<BR>它的具体格式是这样的01为开始位,07是数据长度,0xD0, 0x07,0x01,0x01,0x02,0x2B,0x27是具体数据,0xD0,0x07表示年,其余分别表示月日时分秒,03是结束位,00 F9是校验位,上面的代码能提取月日时分秒,可是不能提取年,提出的都是莫名其妙的数字,请大家看看
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-10-30 23:40:50
<br>内容:D0 07<BR>也就是<BR>2000阿<BR>注意D0 07可能应该是07 D0<BR>07 D0 = 2000
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-10-31 08:31:10
<br>内容:TO:xiongli<BR>0x07,0xD0,0x07<BR>第一个0x07是数据长度,0xD0,0x07是代表2000的,不需要高低位交换!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:LuckGood 回复日期:2003-10-31 09:06:51
<br>内容:ft。你下标数错了,应该是第60byte开始才为日期数据;注意你别忘了应该是在指针指到正确位置时再进行指针类型转换!<BR>int num1=(short)(*((unsigned short*)(bt+60)));应该可以了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:苗秦 回复日期:2003-10-31 09:27:39
<br>内容:其实这个和你上次问的问题都差不多,解决办法如下:<BR>因为你要得到的数据是两个字节的,所以采用word<BR>void CHEXDlg::OnButton1() <BR>{ <BR>BYTE bt[] = {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,<BR> 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,<BR> 0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,<BR> 0x80,0x80,0x00,0x00,0x80,0x00,0x50,0x41,0x53,0x53,0xE0,0xAE,0x06,0x01,0x07,0xD0,<BR> 0x07,0x01,0x01,0x02,0x2B,0x27,0x03,0xEF,0xC0};<BR> word num1=*(WORD*)((unsigned short*)bt+59));<BR> int num2=(char)(*(bt+62));<BR> int num3=(char)(*(bt+63));<BR> int num4=(char)(*(bt+64));<BR> int num5=(char)(*(bt+65));<BR> int num6=(char)(*(bt+66));<BR> m_MSG1.Format("具体数据是:%d,%d,%d,%d,%d,%d",(int)num1,num2,num3,num4,num5,num6);<BR> UpdateData(FALSE);<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -