[问题]Float的资料用Char的Buffer传输

楼主: a22326284 (chin)   2016-02-25 00:31:22
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
IAR
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
传感器转换完的资料用Float的变量储存
但传输的Buffer是定义为Unsigned Char
请问该如何借由此Buffer传资料
喂入的资料(Input):
Float的资料
预期的正确结果(Expected Output):
能在接收端收到有小数点的资料
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: longlongint (华哥尔)   2016-02-25 01:17:00
http://goo.gl/2LRjnrJava: How to convert a String of Binary values toa Float and vice-versa?啊 看错版了......偷吃步 http://goo.gl/KqhmkQ先用偷吃步试试看 如果不行就找api或照格式自刻
作者: stupid0319 (征女友)   2016-02-25 04:16:00
union char[4] and float ?
作者: chuegou (chuegou)   2016-02-25 09:40:00
union也不错,不过我现在是用指标指到float开头
作者: ss780217 (Wade)   2016-02-25 10:03:00
union最简单
作者: qscgy4 (有点厉害)   2016-02-25 10:12:00
我用叙述的讲一次,实作不会再说…1.假设你的有效小数要两位2. 先乘100,存入int变量3.假设int为32bit,你就要拆成4个byte,存到unsigned char4.接收端接收这4个byte后,重组并除100存入float变量补充:建议可以加入checksum
作者: x000032001 (版废了该走了)   2016-02-25 16:35:00
那就直接把float拆成4bytes 不是最快
作者: qscgy4 (有点厉害)   2016-02-25 16:49:00
楼上不懂可不可以不要出来嘴?1.假设他的接收端浮点数不是4byte,你要怎么处理?2.我说的方法可以在在不同变量大小轻易转换,不用任何lib3.不用任何lib的状况下,我是不会拆浮点数啦可以教一下吗?
作者: askacis (ASKA)   2016-02-25 17:54:00
IEEE754转出来丢过去就好了,接受端一样解回来
作者: x000032001 (版废了该走了)   2016-02-25 17:56:00
对阿 就IEEE754 顶多转8bytes再传 这么凶喔 QQ
作者: askacis (ASKA)   2016-02-25 17:59:00
而且IEEE754不用什么lib啊,Bit wise弄一下就好我想应该有大一程度应该就会拆浮点数了^^资料封装这些东西都有RFC可以看,可以参考RFC4506
楼主: a22326284 (chin)   2016-02-25 19:39:00
板上太多高手了 我有看了一下union应该也是一种方法但小弟我昨天还有找到一个叫snprintf的函式 它也可以将浮点数直接格式化成字串 不知道这样会不会有什么缺点
作者: Caesar08 (Caesar)   2016-02-25 19:41:00
作者: qscgy4 (有点厉害)   2016-02-25 19:56:00
sorry, 小弟不才,受教了,没用过union这个方法之前都是为了避免 MUC与电脑的变量大小不同才这样做回 Caesar08 转字串可以,但比较没效率,浪费空间还有时间
作者: Caesar08 (Caesar)   2016-02-25 20:19:00
qscgy4,但他的buffer是unsigned char,有更好的方法吗?
作者: qscgy4 (有点厉害)   2016-02-25 20:21:00
假设你要传字串传一个float长度会不固定,或是固定很长另外value->char,再char->value 很没效率我都是照我上面讲的做法做,变成int后分别右移8,16,24,32存入要传输的unsinged char,最后做checksum丢出去另外更正一样是MCU...打错了= =
作者: chuegou (chuegou)   2016-02-25 22:07:00
推 qscgy4: 楼上不懂可不可以不要出来嘴? 这wwwwunion跟指标阵列都可以拆,原本想说你推很辛苦不想吐槽你结果超凶der
作者: ronin728 (浪人)   2016-02-26 03:51:00
用union的话会不会有byte order的问题?虽然我没确认过会不会在这发生,但多留意一下为妙
作者: k1400 (德州家康)   2016-02-26 08:42:00
不懂可不可以不要出来嘴?
作者: stupid0319 (征女友)   2016-02-26 12:03:00
原PO也没说Buffer是序列还是并列,不知道大家在吵什么如果是8个脚位的并列Buffer,那实作方式还是有差别的以传感器的规格跟Sample为准吧,原厂应该都有资料没有原厂的资料来问,谁会知道传感器原厂的芯片怎写的

Links booklink

Contact Us: admin [ a t ] ucptt.com