0

我创建了一个执行批处理文件的 java GUI,以便轻松无缝地命令串行 com 端口设备。

try {
Process p = Runtime.getRuntime().exec("toggleLed.bat");
    } catch(Exception e) {
      e.printStackTrace();
    }

此代码执行以下 .bat 文件:

@ECHO OFF
ECHO A >COM1
EXIT

此代码通过 com 端口 1 发送字母“A”,设备将其解释为命令并打开 LED,工作正常。唯一的问题是,我希望能够通过 java GUI 更改 COM 端口。我有一个“jSpinner”,但我不确定如何让它来编辑批处理文件中的 com 端口值。

问题:如何让我的 java GUI 编辑批处理文件值?

PS:我使用批处理文件通过串行通信,因为我尝试了许多库,例如 RXTX,但它们都不能很好地工作/太复杂。

4

1 回答 1

3

不要将批处理文件用于单个命令:

String command="cmd /C \"ECHO A >COM"+portNum+"\""; 

这转化为cmd /C "ECHO A>COM#"

并调用它:

Process p = Runtime.getRuntime().exec(command);

如果您需要多个命令,请在命令行内将它们分开&,例如cmd /C "FOO&BAR --baz"

请注意,作为命令行一部分的引号使用反斜杠进行转义。

但是,我强烈建议您花时间学习和使用库,因为它更便携。

库可以在多个操作系统(不仅仅是 Windows)上运行,只需进行一些最小的更改,而且绝对不会完全重写您的应用程序。它们可以作为项目的 jars 随身携带并放入类路径中,类似于您现在对批处理文件所做的事情,但实际上是交叉兼容的。

在项目中设置库可能需要额外的几分钟,但可以随身携带并通过自定义类加载器或更简单-cp的命令参数放入类路径中java。您还可以编辑清单文件以将 jar 添加到类路径中。

于 2013-08-14T15:43:10.823 回答