查找字符串以动态地寻址串行端口

时间:2014-07-09 03:10:08

标签: java ruby-on-rails ruby serial-port

我有一个用Java开发的应用程序,还有一个正在开发的Ruby on Rails应用程序,它需要通过串行通信连接到Arduino。虽然我可以根据自己的计算机输入一个字符串来寻址正确的串口,但字符串也会根据我使用的USB端口而改变,这让我觉得用户选择一个有效的串口会更好从一个从他们自己的计算机上的列表扫描的,而不是我预定义的一个。有没有人可以使用一种策略来允许用户扫描他们的计算机中的所有串行端口,并从Java或Ruby on Rails中选择数组/列表中正确的一个?

1 个答案:

答案 0 :(得分:0)

来自List the ports

import java.util.Enumeration;

import javax.comm.CommPortIdentifier;

/**
 * List the ports.
 * 
 * @author Ian F. Darwin, http://www.darwinsys.com/
 * @version $Id: CommPortLister.java,v 1.4 2004/02/09 03:33:51 ian Exp $
 */
public class CommPortLister {

  /** Simple test program. */
  public static void main(String[] ap) {
    new CommPortLister().list();
  }

  /** Ask the Java Communications API * what ports it thinks it has. */
  protected void list() {
    // get list of ports available on this particular computer,
    // by calling static method in CommPortIdentifier.
    Enumeration pList = CommPortIdentifier.getPortIdentifiers();

    // Process the list.
    while (pList.hasMoreElements()) {
      CommPortIdentifier cpi = (CommPortIdentifier) pList.nextElement();
      System.out.print("Port " + cpi.getName() + " ");
      if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        System.out.println("is a Serial Port: " + cpi);
      } else if (cpi.getPortType() == CommPortIdentifier.PORT_PARALLEL) {
        System.out.println("is a Parallel Port: " + cpi);
      } else {
        System.out.println("is an Unknown Port: " + cpi);
      }
    }
  }
}