📄 subject_35832.htm
字号:
<p>
序号:35832 发表者:liujianwei 发表日期:2003-04-09 19:39:14
<br>主题:关于串口通信的两个问题
<br>内容:1>在使用ReadFile从串口读回数据的过程中,读回来的数据是否是一个字节一个字节按照读的时候的顺序顺次的放在缓冲区中?<BR>2>在VC++中double是否是8字节(应该是),这八个字节是如何分配的呢?之所以问这个问题,是因为有别的仪器通过串口向计算机发送double型数据(这是我的猜测,因为它有6-9个字节不等,并且在使用fscanf()按照%f读取得时候,读回来的是正确的数据),我现在通过计算机的串口接收,不知道接收的个字节应该如何排列,才能正确,因为我按照顺序排列的时候,结果是错误的。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:擎天柱 回复日期:2003-04-09 19:54:02
<br>内容:你可以使用联合试一下!<BR>union unionValue<BR>{<BR> char szValue[16];<BR> double dValue;<BR> float fValue;<BR>};<BR>把从串口读出的数据赋给szValue,然后再查看dValue&fValue的值。
<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>回复者:俊俊 回复日期:2003-04-10 13:55:02
<br>内容:这里面有个高位(MSB)在前低位(LSB)在后,还是低位在前高位在后的问题,首先要搞清楚给串口发数的仪器它的数据类型是怎么定义的,如果不和计算机内的定义相同的话,要通过移位操作来把它变成计算机能识别的编排格式。计算机内好像是低位在前高位在后编排的,如果和计算机内的定义相同直接用memcpy()函数就可以实现将串口接受到的数赋给变量。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:afanty 回复日期:2003-04-10 18:03:51
<br>内容:对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为<BR>双精度,80-bit为扩展精度浮点数)<BR> <BR>1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数<BR> 值用s表示;<BR> <BR>2、第30~23 bit为幂数,其读数值用e表示; <BR><BR>3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该<BR> 小数的十进制值为x;<BR> <BR>则按照规定,该浮点数的值用十进制表示为: <BR>=(-1)^s*(1+x)*2^(e-127) <BR><BR><BR>例如49E48E68:<BR> <BR>1、其第31 bit为0,即s=0<BR> <BR>2、第30-23bit依次为0100 1001 0001,读成十进制就是147,即<BR> e=147<BR> <BR>3、第22-0 bit依次为0110 0100 1000 1110 0110 1000,也就是<BR> 二进制的纯小数0.11001001000111001101000,其十进制形式<BR> 为0.78559589385986328125,即x=0.78559589385986328125。 <BR><BR>这样,该浮点数的十进制表示 <BR>=(-1)^s *(1+x)* 2^(e-127) <BR>=(-1)^0*(1+0.78559589385986328125)* 2^(147-127) <BR>=1872333 <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-04-11 06:43:05
<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 + -