如何解决如何从 COM-PORT 检索 arudino 传感器数据并将其保存在文本文件中?
我必须使用 jSerialComm-API 通过我的 COM 端口获取我的 arduino 传感器数据。
这是我的 Sensor-Class,它在我的 eclipse-terminal 上显示传感器数据。
现在我想使用方法 (extractDataFromCOM()
) 将传感器数据提供给其他类。
import com.fazecast.jSerialComm.*;
public class Sensor {
public void connect() {
SerialPort comPort = SerialPort.getCommPorts()[0];
comPort.openPort();
comPort.addDataListener(new SerialPortDataListener() {
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
}
public void serialEvent(SerialPortEvent event) {
byte[] newData = event.getReceivedData();
for (int i = 0; i < newData.length; ++i)
System.out.print((char)newData[i]); //Terminal output
}
});
}
public String extractDataFromCOM(String data) {
//? ? ?
return data;
}
}
在 TextDatabase.java 类中,我想调用方法 (Sensor.extractDataFromCOM()
) 来检索数据,然后将其存储在文本文件中:
public class TextDatabase {
public static void main(String[] args) throws IOException {
Sensor s1 = new Sensor();
//endless loop to get flow of sensor data?
while (true) {
String mydata = s1.extractDataFromCOM();
//store it in a database or textfile:
FileWriter fw = new FileWriter("mydata.txt",true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(mydata);
//(...)
}
}
}
问题:如何从“TextDatabase”类访问“Sensor”类并检索传感器数据以将其存储在文本文件中?
解决方法
将来自 SerialPortEvent 的数据放入 serialEvent 方法中的类变量中。然后通过extractDataFromCOM将其传递给外部
public class Sensor {
final Queue<byte[]> data = new PriorityQueue<byte[]>();
public void connect() {
SerialPort comPort = SerialPort.getCommPorts()[0];
comPort.openPort();
comPort.addDataListener(new SerialPortDataListener() {
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
}
public void serialEvent(SerialPortEvent event) {
byte[] newData = event.getReceivedData();
data.offer(newData);
}
});
}
public byte[] extractDataFromCOM() {
//? ? ?
//convert to String if required
return data.poll();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。