0

問題があります。スレッドの AsynTask を制御するために使用し、AsynTask を 1 回だけ呼び出しますが、今は複数回呼び出す必要がありますが、もちろんそのためにはいくつかのパラメーターを使用する必要がありますが、使用しないでください。何千もの方法を試しましたが、うまくいきません。ここに私のコードを残します:

     public class leer_registros extends Activity {
    TextView text, depurar;
    EditText reg,ip;
    Button boton;
    float resultado;
    AccionesScada accionesScada = new AccionesScada();


    InetAddress addr = null;        //direccion del esclavo
    int port = Modbus.DEFAULT_PORT;//puerto por defecto 502 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = (TextView) findViewById(R.id.lblRegistro);
        ip = (EditText) findViewById(R.id.txtIp);
        reg = (EditText) findViewById(R.id.txtReg);
        depurar = (TextView) findViewById(R.id.txtdepurar); 
        boton = (Button)findViewById(R.id.btnVerRegistro);
        depurar.setTextColor(Color.RED);
    }
    public class conectar extends AsyncTask<Void,Void,Void>{
        int m;
        int startReg;
        int count;
        String dirIP;
        String dirReg;



        public conectar(String aux,String aux1) {
        this.dirIP=aux;
            this.dirReg=aux1;


            try {

                //IP address;
                //aux1 = ip.getText().toString();
                addr = InetAddress.getByName(dirIP);
                //aux = reg.getText().toString();
                startReg = Integer.decode(dirReg).intValue();
                depurar.setText(dirIP);
                //Reg = startReg[0];

            } catch (Exception e) {
                Log.d("MODBUS","IP error", e);

            }
        }

         protected  Void doInBackground(Void... urls) {



             m = accionesScada.conectar(addr, port);
             resultado = accionesScada.LeerRegistro(startReg, count);

             return null;


         }


         protected void onPostExecute(Integer bytes) {
             if(m==1){
                 depurar.setText("conectado!!!");
                 depurar.setTextColor(Color.GREEN);
            }
                 String resul = String.valueOf(resultado);
                 text.setText(resul); 
         }
    }


    public void verRegistro(View v)  {
        final Handler handler = new Handler();
        Timer timer = new Timer();

        //IP address;
         final String aux = ip.getText().toString();
         final String aux1 = reg.getText().toString();
        TimerTask doAsynchronousTask = new TimerTask() {
        @Override

        public void run() {
            handler.post(new Runnable() {

                @Override
                public void run() {
                    try{ 
                         depurar.setText(aux1);
                        /*conectar conectamos = new conectar();
                        conectamos.execute(aux,aux1);*/
                        conectar conectamos = new conectar(aux,aux1);
                        conectamos.execute();

                    }catch(Exception e){
                        Log.d("MODBUS", "Error Timertask");
                    }

                }

            });

        }

        }; 
        timer.schedule(doAsynchronousTask, 0, 1000);
    }

}

関数に aux と aux1 を渡してほしい。私を助けてください!。ありがとう。

4

2 に答える 2