0

我不是一个好的程序员。在学校,我学习了 MATLAB。所以我不知道我在做什么。

我正在使用 ThingMagic M6 阅读器。他们有自己的 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());
    }
  }
}

这是我尝试使用它:(arg 来自 JTextField)

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

我觉得这个问题有一个非常简单的答案,我就是想不通。我在网上搜索了几天,看了几本书,仍然无法弄清楚。任何帮助表示赞赏。谢谢你。

编辑: readOnceApp 是我写的一种方法。它基本上只是提供的代码的主要方法。如果有帮助,我可以包括它。我只是不想发布太多代码。

4

1 回答 1

1

如果你想从另一个类调用一个类的“main”方法,可以这样做:

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

这是假设“readOnceApp”是您的班级的名称。(顺便说一句,您应该遵循使用大写类名的约定,例如 ReadOnceApp)。

希望这可以帮助。

于 2012-06-07T20:11:39.333 回答