极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15330|回复: 7

求串口传送float数据的源程序

[复制链接]
发表于 2013-11-17 23:03:42 | 显示全部楼层 |阅读模式
谁能够把arduino中的float数据,如:一个负小数(-12.53),通过串口传送到上位机的processing中,并还原为float数据,如负小数(-12.53)?求高手把源程序贴出来。说一下,怎么办的,没用,道理我都知道,就是办不到,这个及其简单的问题,我搞了快一个月了,也没搞定,试了无数方法。记住,processing中不能定义共用体union,本来用共用体分解,传送,还原很好办的,但是没办法,狗日的processing不支持共用体union。
回复

使用道具 举报

发表于 2013-11-18 08:16:04 | 显示全部楼层
论坛上有关于串口通信的数据的贴子吧,可以搜下看看。
回复 支持 反对

使用道具 举报

发表于 2013-11-18 10:17:17 | 显示全部楼层
本帖最后由 Simon 于 2013-11-18 11:28 编辑

在Arduino那边回复了你,这里再回复详细一点的好了,举例:
Arduino端

  1. // Arduino_Processing_Comm.ino

  2. void setup() {
  3.   Serial.begin(9600);
  4. }

  5. void loop() {
  6.   float num = -12.24;
  7.   Serial.println(num);
  8.   delay(1000);
  9. }
复制代码
Processing端

  1. import processing.serial.*;

  2. int lf = 10;
  3. float a_num;
  4. Serial MyDuino;

  5. void setup() {
  6.   size(320,240);
  7.   MyDuino = new Serial(this, "/dev/cu.usbserial-A70274SG", 9600);
  8. }

  9. void draw(){
  10.   while(MyDuino.available()>0){
  11.     a_num = float(MyDuino.readStringUntil(lf));
  12.     println(a_num);
  13.     delay(1000);
  14.   }
  15. }

  16. void stop(){
  17.   MyDuino.stop();
  18. }
复制代码
如果有多个数据传输,各个数据之间给个10ms的读取间隔就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-23 16:29:17 | 显示全部楼层
Simon 发表于 2013-11-18 10:17
在Arduino那边回复了你,这里再回复详细一点的好了,举例:
Arduino端Processing端如果有多个数据传输,各 ...

谢谢!,不错,你这个方法很好。不过,processing最新版2.1版本居然MyDuino.readStringUntil(lf)这个函数不能用,只有1.5版本能用。不知道是不是processing2.1版本的一个bug。
回复 支持 反对

使用道具 举报

发表于 2013-12-5 21:51:00 | 显示全部楼层
求2.1的解决方案。

菜鸟求教程,程序给个注解啊。。
回复 支持 反对

使用道具 举报

发表于 2015-1-31 13:18:02 | 显示全部楼层
有一个笨办法 ,把小数部分和整数部分分开来传 变成两个整形变量
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-30 10:52 , Processed in 0.040288 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表