kingone 发表于 2013-11-17 23:03:42

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

谁能够把arduino中的float数据,如:一个负小数(-12.53),通过串口传送到上位机的processing中,并还原为float数据,如负小数(-12.53)?求高手把源程序贴出来。说一下,怎么办的,没用,道理我都知道,就是办不到,这个及其简单的问题,我搞了快一个月了,也没搞定,试了无数方法。记住,processing中不能定义共用体union,本来用共用体分解,传送,还原很好办的,但是没办法,狗日的processing不支持共用体union。

无为 发表于 2013-11-18 08:16:04

论坛上有关于串口通信的数据的贴子吧,可以搜下看看。

Simon 发表于 2013-11-18 10:17:17

本帖最后由 Simon 于 2013-11-18 11:28 编辑

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

void setup() {
Serial.begin(9600);
}

void loop() {
float num = -12.24;
Serial.println(num);
delay(1000);
}
Processing端
import processing.serial.*;

int lf = 10;
float a_num;
Serial MyDuino;

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

void draw(){
while(MyDuino.available()>0){
    a_num = float(MyDuino.readStringUntil(lf));
    println(a_num);
    delay(1000);
}
}

void stop(){
MyDuino.stop();
}
如果有多个数据传输,各个数据之间给个10ms的读取间隔就可以了。

kingone 发表于 2013-11-23 16:29:17

Simon 发表于 2013-11-18 10:17 static/image/common/back.gif
在Arduino那边回复了你,这里再回复详细一点的好了,举例:
Arduino端Processing端如果有多个数据传输,各 ...

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

loucat 发表于 2013-12-5 21:51:00

求2.1的解决方案。

菜鸟求教程,程序给个注解啊。。

Jayven 发表于 2015-1-31 13:18:02

有一个笨办法 ,把小数部分和整数部分分开来传 变成两个整形变量
页: [1]
查看完整版本: 求串口传送float数据的源程序