对不起,我的问题不清楚。我应该给出一些我正在使用的代码。请参考下面的链接:
http://www.arduino.cc/playground/Interfacing/Java
基本上此示例代码是通过声明对一些功能的“同步”的关键字与从串行端口上的基于事件的通信那些经典RXTX例子不同。其中我的工作的唯一部分是串行事件侦听器内:
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
////////////////////////////////////
1) I will parse the incoming data into an integer array
2) this array will be shared with other classes, let me
explain some of them below.....
////////////////////////////////////
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
功能A:一个applet做使用该共享阵列中的数据的2D/3D图形。
功能B:GUI将输出/打印从共享数组计算的一些数字到jframe中的textarea。它也可以用一个按钮打开Function A applet。但也有在GUI中的某些按钮会改变在功能上的一些变量导致不同的行为来处理功能A.共享阵列
这就是我想要的:
由于串行数据进来和解析到数据数组中......
1)功能B将立即打印与此数据阵列相关联的数字。只有当用户点击该按钮才能显示Function A小程序时,功能A将显示2D/3D图形。
2)当功能A和B都处于激活状态时,它们自己的变量会随着输入的串行数据一起发生变化。
我希望函数A和B在serialEvent()中更改时立即捕获共享数据数组中的更改。我知道最简单的方法是传递数据数组作为参考,并在下一个传入数据可用之前调用每个函数。但前面提到的问题是Grodriguez。当功能A或B正在进行时,可能会有一些丢失的传入数据。我在几年前在java中做了一些有关MVC的内容,它使用不同类或GUI之间的可变长度来显示温度。就像我在文本框中输入温度时一样,带滑块的另一个GUI将变为输入温度。当我在这里改变滑块时,它会改变另一个GUI中的温度。串行事件让我想起这里的这个应用程序。我不确定这是在这里应用的最佳方法,还是可能有其他更好更简单的方法来实现我想要的。
再次感谢您的耐心等待。
感谢您的纠正。起初,我只是想着不同的线程可以访问相同的数据。首先想到的是将这些数据作为其他线程的参考。我没有想到并发性。感谢提醒我。 – DYL 2010-11-08 04:38:24