0

シリアル COM ポート デバイスに簡単かつシームレスにコマンドを実行するために、バッチ ファイルを実行する Java GUI を作成しました。

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 だけでなく) 複数の OS で動作でき、アプリケーションを完全に書き直すことはできません。それらはプロジェクトで jar として持ち運べ、クラスパスに入れることができます。これは、現在バッチ ファイルで行っていることと似ていますが、実際には相互互換性があります。

ライブラリをプロジェクトにセットアップするのに数分余分にかかる場合がありますが、それを持ち歩き、カスタム クラスローダー、またはより簡単にコマンドの-cpパラメーターを介してクラスパスに配置することができますjava。マニフェスト ファイルを編集して、jar をクラスパスに追加することもできます。

于 2013-08-14T15:43:10.823 に答える