[英]Java GUI and Arduino - Extract Information from Serial
我目前在Arduino项目中工作。 我需要在其中读取5个模拟传感器。
每个传感器的arduino代码非常简单。 但这是以下内容:
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensor1 = analogRead(A0);
float volt1 = sensor1 * (5.0 / 1023-0);
Serial.print("The voltage on the sensor 1 is: ");
Serial.println(volt1);
}
使用Arduino网站http://playground.arduino.cc/Interface/Java上的Java文档,我能够设置Rx和Tx库。 而且我还能够从Java控制台的串行端口获取数据。 我现在需要做的是从控制台中提取该信息并将其显示在GUI上。
在Java控制台中,我有:
传感器1上的电压为:X
传感器2上的电压为:Y传感器3上的电压为:Z
传感器4上的电压为:W
传感器5上的电压为:A
我需要将X,Y,Z,W和A的值分别放在不同的JTextField上
谢谢您的帮助
查看示例输出数据:
The voltage on the sensor 1 is: X
The voltage on the sensor 2 is: Y
The voltage on the sensor 3 is: Z
The voltage on the sensor 4 is: W
The voltage on the sensor 5 is: A
听起来您只需要获取:
字符后的数据并删除该值周围的空格,即可将其解析为浮点值。 使用String类应该很简单:
这是一个基本示例:
String stringFromSerial = "The voltage on the sensor 1 is: X";
String valueString = stringFromSerial.substring(stringFromSerial.lastIndexOf(":")+1).trim();
System.out.println(valueString);
如果它满足您的要求,则可以将其封装在一个函数中:
float extractFloat(String serialMessage){
float result = Float.NaN;
try{
result = Float.parseFloat(serialMessage.substring(serialMessage.indexOf(":")+1).trim());
}catch(Exception e){
System.err.println("Oh-oh! Something went wrong trying to convert " + serialMessage);
e.printStackTrace();
}
return result;
}
我不确定是否值得发送这么多字符。 您可能要考虑发送以逗号分隔的值,例如在csv行中。
遵循以下原则:
Serial.print(volt1);
Serial.print(",");
Serial.print(volt2);
Serial.print(",");
Serial.print(volt3);
Serial.print(",");
Serial.print(volt4);
Serial.print(",");
Serial.println(volt4);
这样做的好处是,在较新版本的Arduino(版本1.6.6或更高版本)中,您应该可以使用Tools> Serial Plotter 。
此外,如果您不拘泥于原始的Java和swing组件,则可能要签出Processing及其序列库
对于您的问题,我不太清楚,但是我没有足够的意见要发表,所以我将至少回答一部分。
new JTextField(Float.toString(volt1));
将使用电压值创建一个JTextField。 您可以将创建的字段分配给所需的任何变量。
我不确定在变量中有值时为什么要从控制台中提取值。
有帮助吗?
如果不是,您能否更具体地说明您的要求,以及为什么要从控制台获取价值?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.