2009-03-12 9 views
6

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

ここでは、Linux上でこのソリューションを使用しようとしています(実際には、Linuxの様々な種類のLinuxで動作します) - Ubuntuサーバーモードを使用しています。多くの試みの後

- 血と汗とほとんど涙私たちはこのシナリオを持っている:

Javaバージョン1.4.2_17 のLinux - Ubuntuの ツウシンLIBS - デフォルトのドライバで太陽から供給されるCOMM3が

アンを指定外部COMMテストはCOMMポートを示していますの/ dev/ttyS0にと/ dev/ttyS1の しかし、Javaアプリケーションがポートの/ devを開くことができないと言う/ ttyS1の

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

シリアルポート通信のためにLinuxでjava 1.4.2を使用できる人はいましたが、自分のシナリオに適用できる解決策が見つかりましたか?

が大幅

フィル

+0

javaプロセスに/ dev/ttyS [01]を開く権限がありますか? –

+0

エラーは何ですか?そして私はEugeneと同意するでしょう – TofuBeer

+0

この問題の解決方法はありますか?私も同じエラーがあります。 – Joe

答えて

1

に感謝し、私はこれをやったので、それはしばらくしています。/dev/ttyS0をファイルとI/Oとして開くことができないことを覚えています。

Sun IO jarsでも同じ問題が発生しています。

私が解決した解決策は、シリアルポートとシリアルポートをstdoutにstdinした小さなコマンドラインプログラムをC言語で作成することでした。その後、私は自分のJavaプロセスからこのプログラムを立ち上げました。私はコードを持っていませんが、Linuxのシリアルポートに書き込むcプログラムのウェブ上にはたくさんの例があります。

+0

hmmm、私はニュージーランドの人にこのことについて助けを求めている解決策を提示しました。しかし、私は明日(11時間先)、彼らがどこに行くかを見るために待つ必要があります。それから私はここに私の所見を置きます。 ありがとうございました –

2

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

1

我々は素晴らしい結果となりました数年前から、WindowsとLinuxの両方でのJavaのシリアル通信用SerialIOライブラリを使用してきた(となし、私は:-)彼らのために動作しません):

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

ライブラリはLinuxでも利用可能なシリアルポートを自動検出しません。手動で設定する必要があります。

+0

こんにちは、私はUbuntuでSerialIOを設定しようとしています。私は、私のubuntu 64bit用に正しくロードされたネイティブlibを取得しますが、ポートをオープンしようとすると、javax.comm.NoSuchPortExceptionが発生します。/ dev/ttyUSB0:ポートリストに見つかりません。デバイスはそこにあり、他のアプリでは使用していません。どんな助けも大変に感謝します。多分私はあなたが答えることができる質問をすることができますか?ありがとう! –

+0

@DavidHofmann Oooof ...私はそのことに取り組んでから数年経っています - 私はコードをもはや持っているかどうかわかりません:-(私は正確な問題を覚えていますが、私は手動で追加/ dev/tty/USB0:USBポートをシリアルポートにマップしたと思っていた設定ファイルへ。私は心配しません:-(。私は狩りをして元のコードを調べることができるかどうかを見ます。 – tonys

0

ライブラリでは何も変更されませんでした。 しかし、シリアルポートオブジェクトでEventListenerの使用を取り除くと、問題が解決されました。

これは実際に私たちのコードがlinux(jre1.4.2、slackware、Suns Comm3ドライバ)上で動作することを可能にしました。

フィル

3

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

それはGitHubの上のオープンソースおよび利用可能です:

j232 - Javaソースコード

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

wikiページはhereです。

これはLinuxのみのパッケージとライブラリです。

関連する問題