arduino串口值java_Arduino - 处理串行通信

如前所述,最好让所有代码找到问题所在 . 我想你没有在处理设置中添加函数“bufferUntil()”,所以每次串口收到一个值时,它只显示它 . 我可以为你提出一个解决方案,它不是唯一的解决方案,但似乎有效 .

在您的Arduino代码上,您应该使用Serial.println()来分隔您的消息,而不是Serial.print() .

void setup() {

Serial.begin(9600);

}

void loop() {

int r = random(10,100);

int s = random(10,100);

int t = random(10,100);

Serial.println("R"+String(r));

Serial.println("S"+String(s));

Serial.println("T"+String(t));

delay(1000);

}

所以你会发送消息为

Rxx

Sxx

Txx

在处理中,您必须使用函数“bufferUntil(lf)” . 它将保存来自串口的所有消息,直到收到“/ n” . 之后,您应该使用另一个函数将标识符与值相关联 .

// Example by Tom Igoe

import processing.serial.*;

Serial myPort; // The serial port

PFont myFont; // The display font

String inString; // Input string from serial port

int lf = 10; // ASCII linefeed

String data = "";

int R,S,T;

void setup() {

size(400,200);

// List all the available serial ports:

printArray(Serial.list());

// Open whatever port is the one you're using, mine is one.

myPort = new Serial(this, Serial.list()[1], 9600);

myPort.bufferUntil(lf); //delimiter of serial buffer end line

}

void draw() {

background(0);

text("received: "+" R="+R+" S="+S+" T="+T, 10,50); //Display value on the window

}

void serialEvent(Serial p) {

while(p.available()>0){

String buf=p.readString(); //Read serial input

println(buf);

if(!buf.equals('\n')) //delete null='/n' from arduino println()

data=buf; //Save buffer

}

/*char id=data.charAt(0); //Get id from buffer

int value=parseInt(data.substring(1,3)); //Get the value from buffer

identifyVariable(id,value); //Associate id and value*/

}

void identifyVariable(char ID, int value){

switch(ID){ //associate id with value

case('R'):

R=value;

break;

case('S'):

S=value;

break;

case('T'):

T=value;

break;

default:

println("error "+ID+" "+value );

break;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值