0

私は優れたプログラマーではありません。学校では、MATLABを学びました。だから私は自分が何をしているのか分かりません。

私はThingMagicM6リーダーを使用しています。彼らは独自のAPIを持っています。プログラムを読むための独自のアプリケーションを作成したかったのです。彼らが提供したサンプルプログラムを使用したい(私のプログラムが機能していないように見えるため)。ただし、提供されているプログラムはコマンドライン引数のみを受け入れます。コードで引数を渡すことができるように変更するにはどうすればよいですか。

これは提供されたコードです:(コマンドラインでtmr://10.0.0.101と入力します)

    /**
 * Sample program that reads tags for a fixed period of time (500ms)
 * and prints the tags found.
 */

// Import the API
package samples;
import com.thingmagic.*;

public class read
{  
  static void usage()
  {
    System.out.printf("Usage: demo reader-uri <command> [args]\n" +
                      "  (URI: 'tmr:///COM1' or 'tmr://astra-2100d3/' " +
                      "or 'tmr:///dev/ttyS0')\n\n" +
                      "Available commands:\n");
    System.exit(1);
  }

   public static void setTrace(Reader r, String args[])
  {    
    if (args[0].toLowerCase().equals("on"))
    {
      r.addTransportListener(r.simpleTransportListener);
    }    
  }


   static class TagReadListener implements ReadListener
  {
        public void tagRead(Reader r, TagReadData t) {
            System.out.println("Tag Read " + t);
        }
  }

  public static void main(String argv[])
  {

      System.out.println(argv.getClass().toString());
    // Program setup
    TagFilter target;

    Reader r;
    int nextarg;
    boolean trace;

    r = null;
    target = null;
    trace = false;

    nextarg = 0;

    if (argv.length < 1)
      usage();

    if (argv[nextarg].equals("-v"))
    {
      trace = true;
      nextarg++;
      System.out.println("Trace");
    }

    // Create Reader object, connecting to physical device
    try
    { 

      TagReadData[] tagReads;
      r = Reader.create(argv[nextarg]);
      if (trace)
      {
        setTrace(r, new String[] {"on"});
      }
      r.connect();
      if (Reader.Region.UNSPEC == (Reader.Region)r.paramGet("/reader/region/id"))
      {
          r.paramSet("/reader/region/id", Reader.Region.NA);
      }
      r.addReadListener(new TagReadListener() );
      // Read tags
      tagReads = r.read(500);
      // Print tag reads
      for (TagReadData tr : tagReads)
        System.out.println(tr.toString());

      // Shut down reader
      r.destroy();
    } 
    catch (ReaderException re)
    {
      System.out.println("Reader Exception : " + re.getMessage());
    }
    catch (Exception re)
    {
        System.out.println("Exception : " + re.getMessage());
    }
  }
}

これは私がそれを使おうとしているところです:(引数はJTextFieldから来ています)

String[] argv = new String[1];
        argv[0] = arg;
readOnceApp(argv);

私はこの問題に対する本当に簡単な答えがあると感じています、私はそれを理解することができません。私は数日間インターネットを検索して本を読みましたが、それでも理解できません。どんな助けでも大歓迎です。ありがとうございました。

編集:readOnceAppは私が書いたメソッドの1つです。これは基本的に、提供されたコードのメインメソッドにすぎません。それが助けになるなら、私はそれを含めることができます。あまり多くのコードを投稿したくなかっただけです。

4

1 に答える 1

1

クラスの「メイン」メソッドを別のクラスから呼び出したい場合は、次のようにします。

String [] args = new String [1];
args[0]= "some param";
readOnceApp.main(args);

これは、「readOnceApp」がクラスの名前であると仮定しています。(ところで、大文字のクラス名を使用する規則に従う必要があります。たとえば、ReadOnceApp)。

お役に立てれば。

于 2012-06-07T20:11:39.333 に答える