labview如何用串口向单片机发送浮点数
答案:4 悬赏:50
解决时间 2021-01-15 15:45
- 提问者网友:咪咪
- 2021-01-15 09:45
labview如何用串口向单片机发送浮点数
最佳答案
- 二级知识专家网友:有你哪都是故乡
- 2021-01-15 10:52
1、首先,要确定下用的是哪款单片机,是否支持浮点数;
2、然后,用的什么协议与单片机通信;
3、各种类型的数据(整形、浮点型)都是先用格式化的方式转行成了无符号整形,然后下发。读取就是先将读取的数据格式化成所定义的类型。这样可以保证16位或32位的每个位的值都不改变。
2、然后,用的什么协议与单片机通信;
3、各种类型的数据(整形、浮点型)都是先用格式化的方式转行成了无符号整形,然后下发。读取就是先将读取的数据格式化成所定义的类型。这样可以保证16位或32位的每个位的值都不改变。
全部回答
- 1楼网友:摆渡翁
- 2021-01-15 14:31
你在这里需要做的是数值到字符串的转换。
如图,下列三种方式任选其一即可。前两种相当于通过指针类型转换得到,方便快捷,但对新手来说不直观。后一种相当于sprintf函数格式化得到,看起来比较直观。
- 2楼网友:掌灯师
- 2021-01-15 13:22
用这个函数,在数学-》数值-》数据操作。
不过你得注意单片机接收的浮点数是什么格式的,是float还是double,labview默认的浮点数都是double占64bits。如果单片机的浮点数是32bits,你得把“数值”的表示法换成SGL才行。
还有就是大端小端问题,如果你单片机那边收的数完全不对,你可以考虑换一种对齐方式。
- 3楼网友:拜訪者
- 2021-01-15 12:26
用sprintf语句,格式为"%d",输出就是浮点数了,单片机收到的是一串数字,中间包括小数点,比如 135.24,在单片机里定义一个浮点变量,用一循环,前一位*10+后一位,遇到小数点后每一位*1/10。
还有一个方法,在上位机程序和下位机程序里各定义一个char型数组如A[2]和一个浮点变量M,A[2]在前,M在后,两个紧挨着。上位机要把M的值发给下位机,就把A[2],A[3],A[4],A[5]四个字节发过去就行了,下位机收到后出填入A[2],A[3],A[4],A[5],这样一个浮点数就发过来了。当然,这要采用二进制通信方式,不能用文本方式!追问第二个方法不能理解。。能解释一下嘛追答char型数组A[2]只占两个存储单元,浮点变量M占四个存储单元,数组A其实只有两个元素A[0]和A[1], 而A[2],A[3],A[4],A[5]实际上就是浮点变量M。
还有一个方法,在上位机程序和下位机程序里各定义一个char型数组如A[2]和一个浮点变量M,A[2]在前,M在后,两个紧挨着。上位机要把M的值发给下位机,就把A[2],A[3],A[4],A[5]四个字节发过去就行了,下位机收到后出填入A[2],A[3],A[4],A[5],这样一个浮点数就发过来了。当然,这要采用二进制通信方式,不能用文本方式!追问第二个方法不能理解。。能解释一下嘛追答char型数组A[2]只占两个存储单元,浮点变量M占四个存储单元,数组A其实只有两个元素A[0]和A[1], 而A[2],A[3],A[4],A[5]实际上就是浮点变量M。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |