Java: Как сохранить процесс в потоке и прочитать его значения? - PullRequest
0 голосов
/ 23 февраля 2012

Я не знаю, является ли это лучшим подходом, поэтому я прошу вашей помощи, ребята.

Это моя проблема, я разрабатываю приложение, в котором у вас есть кнопка «чтение», когда пользователь нажимает эту кнопку, затем программа начинает считывать некоторые значения и сохранять эти значения в моей базе данных, хорошо?

Так что я думаю, что когда пользователь нажимает «читать», я запускаю тему, потому что пользователь может делать что-то другое, если он хочет, чтобы приложение не зависало. Но я не могу получить доступ к значениям, прочитанным этой веткой.

Есть еще один способ сделать это?

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).

1 Ответ

2 голосов
/ 23 февраля 2012

Передайте ссылку на интерфейс, который у вас есть. Например. Вы можете добавить поле JFrame owner в супервизорный класс и передать туда свои значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...