使用或存储串行数据并从其他Java类进行访问
您好,我是串行编程新手。我正在尝试将串行数据从一个类返回到另一个类,这是我的代码(使用RXTX库) 读取和打印该类中的数据是成功的,但是从该类中访问值将返回null…任何帮助都将不胜感激..谢谢 阅读和打印本课程中的数据是成功的,但是 从中访问值将返回null 根据您的代码,我看到您正在遵循以下示例:(如果您没有,那么您应该看一看)。正如其标题所说,它是一种通过串行端口进行读/写的基于事件的方式 话虽如此,我强烈怀疑你正试图这样做:使用或存储串行数据并从其他Java类进行访问,java,serial-port,rxtx,Java,Serial Port,Rxtx,您好,我是串行编程新手。我正在尝试将串行数据从一个类返回到另一个类,这是我的代码(使用RXTX库) 读取和打印该类中的数据是成功的,但是从该类中访问值将返回null…任何帮助都将不胜感激..谢谢 阅读和打印本课程中的数据是成功的,但是 从中访问值将返回null 根据您的代码,我看到您正在遵循以下示例:(如果您没有,那么您应该看一看)。正如其标题所说,它是一种通过串行端口进行读/写的基于事件的方式 话虽如此,我强烈怀疑你正试图这样做: XXX serialPortListener = new XX
XXX serialPortListener = new XXX();
int light = serialPortListener.send();
int lightStatus = serialPortListener.sendst();
很可能是send()
和sendst()
返回null
或0
,因为调用这些方法时还没有发生SerialPortEvent
。因此,如果您在一个事件驱动的场景中工作,那么将其保留在这个框架中是有意义的。怎样例如,实施:
1) 使XXX
类从Observable
扩展并执行以下小更改:
public class XXX extends Observable implements SerialPortEventListener {
int[] val = new int[2];
public synchronized void serialEvent(SerialPortEvent oEvent) {
String storeId;
String status;
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
// all your code here
setChanged();
notifyObservers();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
...
}
2) 另一个类必须实现Observer
接口:
public class MyObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
if(o instanceof XXX){
XXX observable = (XXX) o;
System.out.println("Light: " + observable.send());
System.out.println("Light status: " + observable.sendst());
}
}
}
3) 将MyObserver
对象附加到XXX
实例:
XXX serialPortListener = new XXX();
serialPortListener.addObserver(new MyObserver());
就这样。每次处理SerialPortEvent
时,都会通知观察者,并成功读取值
XXX serialPortListener = new XXX();
serialPortListener.addObserver(new MyObserver());