Я не знаю, является ли это лучшим подходом, поэтому я прошу вашей помощи, ребята.
Это моя проблема, я разрабатываю приложение, в котором у вас есть кнопка «чтение», когда пользователь нажимает эту кнопку, затем программа начинает считывать некоторые значения и сохранять эти значения в моей базе данных, хорошо?
Так что я думаю, что когда пользователь нажимает «читать», я запускаю тему, потому что пользователь может делать что-то другое, если он хочет, чтобы приложение не зависало.
Но я не могу получить доступ к значениям, прочитанным этой веткой.
Есть еще один способ сделать это?
EDIT:
private void jtb_readerItemStateChanged(java.awt.event.ItemEvent evt) {
// getting some values provided by the user
if (buttonReaderState()){
if (supervisory == null)
supervisory = new Supervisory(ip, broadcast, deviceID);
supervisory.start();
}
}
// Supervisory class
public void start(){
Scan scan = new Scan();
Thread t = new Thread(scan);
t.start();
threadState = true;
}
class Scan extends Thread{
public void run(){
// inside the tread I have to initiate another 'supervisory' object, is that right ?
Supervisory s = new Supervisory(ip, broadcast, deviceID);
while (threadState){
try {
s.active();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public void active() throws IOException, Exception {
// getting this values from my hardware like temperature and anothers things.
for (int i = 0; i < ois.size(); i++) {
ObjectIdentifier oi = ois.get(i);
//analog input
if (i == 1)
aI = Float.parseFloat(getPresentValue(localDevice, oi));
//analog output
if (i == 2)
aO = Float.parseFloat(getPresentValue(localDevice, oi));
//binary input
if (i == 3)
bI = getBinaryValue(getPresentValue(localDevice, oi));
//binary output
if (i == 4)
bO = getBinaryValue(getPresentValue(localDevice, oi));
}
}
После прочтения этих значений я хотел бы показать эти значения в интерфейсе, который я создаю, но, похоже, я не могу получить доступ к этим значениям (aI, aO, bI, bO).