對不起,我的問題不清楚。我應該給出一些我正在使用的代碼。請參考下面的鏈接:
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