7

シリアル ポート経由でピンパッドを管理する Java アプリケーションを使用します。これは、Sun Comm.jar、提供された dll、およびプロパティ ファイルを使用して Windows で完全に機能します。

現在、このソリューションを Linux で使用しようとしています (実際には、現場で他のさまざまな種類の Linux で実行されています) - Ubuntu サーバー モードを使用します。

多くの試行錯誤の結果、血と汗とほとんど涙がこぼれた後、次のシナリオができました。

Java バージョン 1.4.2_17 Linux - Ubuntu Comm libs - Sun が提供する Comm3 (デフォルトのドライバーが指定されている)

外部通信テストは、通信ポート /dev/ttyS0 および /dev/ttyS1 を示していますが、Java アプリケーションは、ポート /dev/ttyS1 を開くことができないと言います

(RXRT ファイルを使用すると、無効なポート エラーが発生します)

Linux でシリアル ポート通信に Java 1.4.2 を使用でき、私のシナリオに適用できる解決策を見つけた人はいますか?

大変感謝しています

フィル

4

5 に答える 5

4

これは古い質問であることは承知していますが、シリアル ポートの読み取りと書き込みを可能にする Java パッケージとネイティブ ライブラリを作成しました。現在は同期モードのみです。

これはオープン ソースであり、GitHub で入手できます。

j232 - Java ソースコード

libj232 - j232 のネイティブ ライブラリ。

ウィキページはこちら.

これは Linux 専用のパッケージおよびライブラリであることに注意してください。

于 2015-01-24T21:28:01.987 に答える
2

シリアルポートにアクセスする権限を持つユーザーを使用していることを確認してください。一部のディストリビューションでは、シリアルポートがuucpグループに含まれているため、ユーザーがそのグループに属していることを確認してください。

于 2009-03-12T14:58:49.807 に答える
1

私たちは、WindowsとLinuxの両方でJavaシリアル通信にSerialIOライブラリを数年間使用しており、素晴らしい結果が得られています(いいえ、私はそれらのために働いていません:-)):

http://serialio.com/products/serialport/serialport.php

ただし、ライブラリはLinuxで使用可能なシリアルポートを自動検出しません。手動で構成する必要があります。

于 2009-03-12T15:11:46.407 に答える
1

私がこれをやったのは久しぶりです。/dev/ttyS0 をファイルとして開いて I/O することはできないことを覚えています。

Sun IO jar でも同じ問題が発生したことを覚えています。

私が落ち着いたことを覚えている解決策は、標準入力をシリアル ポートにエコーし、シリアル ポートを標準出力にエコーする C で小さなコマンド ライン プログラムを作成することでした。次に、Java プロセスからこのプログラムを起動しました。私はコードを持っていませんが、Web には Linux シリアル ポートに書き込む C プログラムの例がたくさんあります。

于 2009-03-12T13:21:13.660 に答える
0

使用するライブラリには何も変更を加えていません。しかし、シリアルポートオブジェクトで EventListener の使用を削除すると、問題が修正されました。

これにより、Windows では問題にならなかった Linux (jre1.4.2、slackware、および Suns Comm3 ドライバー) でコードを動作させることができました。

フィル

于 2009-03-13T13:54:36.277 に答える