labview如何用串口向单片机发送浮点数
4个回答
推荐于2016-07-01
展开全部
1、首先,要确定下用的是哪款单片机,是否支持浮点数;
2、然后,用的什么协议与单片机通信;
3、各种类型的数据(整形、浮点型)都是先用格式化的方式转行成了无符号整形,然后下发。读取就是先将读取的数据格式化成所定义的类型。这样可以保证16位或32位的每个位的值都不改变。
2、然后,用的什么协议与单片机通信;
3、各种类型的数据(整形、浮点型)都是先用格式化的方式转行成了无符号整形,然后下发。读取就是先将读取的数据格式化成所定义的类型。这样可以保证16位或32位的每个位的值都不改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用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[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。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询