日期:2014-05-17  浏览次数:20778 次

winform串口如何接收float数据
问题如标题,并可以转换成string型
------最佳解决方案--------------------
定义float类型变量接受就是了啊。
------其他解决方案--------------------

发送方:
float myData=1.2345F;
serialPort1.Write(myData.ToString());
接收方:
string str=serialPort.ReadExisting();
float myFloat=Convert.ToSingle(str);
------其他解决方案--------------------
BitConverter.GetBytes
------其他解决方案--------------------
有一种做法是在通信中只传送数字,没有小数点,但是在协议中约定了第几位之后就是小数点后面的数字。
比如:
一次接收数据长度是14位,12345678901234,你约定了小数位是第9位,那你的数据就是12345678.901234
这样就比较方便了
------其他解决方案--------------------
我现在接收的是一个字符串"F39.6258Z"
请问我如何把这个字符串拆分成一个字符串数组str={‘F’,"39.6258","Z"};?

引用:
定义float类型变量接受就是了啊。

------其他解决方案--------------------
引用:
我现在接收的是一个字符串"F39.6258Z"
请问我如何把这个字符串拆分成一个字符串数组str={‘F’,"39.6258","Z"};?

引用:定义float类型变量接受就是了啊。


这个值会变动吗?你可用正则匹配
------其他解决方案--------------------
如果变化可以用词法分析器
------其他解决方案--------------------
string[] strs = str.Split(new char[2] { 'F', 'Z' }, StringSplitOptions.RemoveEmptyEntries);
                    float f = float.Parse(strs[0]);

我用string里的Split做了一个分离,分离出来的值就是我要的float数据;
在做分离之前可以先用startwith和endwith判断首尾字母是否为F和Z。
谢谢大家的解答