我正在使用 TI 的 F28335 与 PC 进行串行通信 (RS-232)。
在 matlab 中,我需要计算一些双数并将它们串行发送到控制器。
例如,我有 1.00e-5,我使用以下方法将其转换为单个字节:
Time1On = typecast(Time1On, 'uint8');
结果是:
172 197 39 55
然后我把它转换成十六进制,我设法把它变成一个字符串来发送它
ACC52737
我将此串行发送到 F28335,并将正确的值放入 Uint32 变量(数组中的位置),但我似乎无法找到将相同的单个字节复制到双精度值的方法,这将得到我相同的原始分数。
我尝试从 Uint32 数组进行转换,其中接收到的值被正确存储:
dataDouble = (double) (*(RxPacket.RcvData + RxPacket.idxData));
但我明白了:
11100000000000000000000000000000 or 2.898602e+09
我尝试将其存储为联合:
union doubleConstruct{
double Val;
Uint16 rxArray[2];
};
并将16个字分别保存(我用汉明奇偶校验编码每16位,并解码16位字)到数组的位置,但双重结果是一样的......
有人曾经将双打分成字节并串行发送吗?如果是,您后来是如何组成和恢复相应的双数的?有没有办法将 unsigned int 的位戳成双精度值?
谢谢!