• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アプレットでRS232Cの制御)

アプレットでRS232Cの制御

このQ&Aのポイント
  • アプレットでRS232Cの制御を行うプログラムを作っています。制御といってもDTRのピンをON,OFFするだけのものです。
  • ブラウザで起動させ処理が終わる前にCtrl+F5で更新を行うとエラーが発生し、以後アプレットが正常に動作しなくなります。
  • ヒントを教えていただければ助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kacchann
  • ベストアンサー率58% (347/594)
回答No.3

>署名をつけたcomm.jarにアプレットを入れそれを実行しています。 >これだと一応クライアント側ですよね? この場合のcomm.jarは、 「クライアント側に前もってインストールされているもの」ではなく、 「サーバに配置(し、クライアント側マシンに配信)するもの」ですよね? --- >JREのlib/extにcomm.jarを入れても読み込まないため アプレットのソースコード内に System.out.println("java.ext.dirs="+System.getProperty("java.ext.dirs")); を埋め込んで、java.ext.dirsの値が適正かどうか確認してみてはどうでしょうか。 値が不正(※実行JREのlib/extを含んでいない)なら、JREを再インストール。 値が適正であったなら、ちょっと僕にはわかりません。

exiter
質問者

お礼

>java.ext.dirsの値が適正かどうか確認してみてはどうでしょうか。 java.ext.dirsの値は正しかったですがcommをそこに配置していませんでした・・・ commをjava.ext.dirsに配置しなおしたら無事に動作いたしました。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.2

comm.jarを 「実行しているJREのlib/ext」 にインストールしてますか? (要するに 「クライアント側マシンにインストールしたcomm.jarを 利用するようになってますか?」 ということ) --- あとはちょっとわかりません・・・。

exiter
質問者

補足

署名をつけたcomm.jarにアプレットを入れそれを実行しています。 (JREのlib/extにcomm.jarを入れても読み込まないため) これだと一応クライアント側ですよね?

すると、全ての回答が全文表示されます。
  • kacchann
  • ベストアンサー率58% (347/594)
回答No.1

これ使ってるんでしょうか。 http://www.okakogi.go.jp/People/miwa/program/how2com/how2com.html 何か既存のライブラリを使っているなら、 まずは 「正しく」インストールしているか、 「正しく」使っているか、 確認してみては。 --- また、 ブラウザの「リロード対象」になるクラスファイル内に 「DLLを呼び出すコード」を記述していると、 エラーが発生するっぽいです。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4286309

exiter
質問者

補足

Java Communication APIを使用して制御しております。 使い方はそちらのサイトを参考にしております。 おそらく指摘された >ブラウザの「リロード対象」になるクラスファイル内に >「DLLを呼び出すコード」を記述していると、 >エラーが発生するっぽいです。 っていうのが原因だと思います。 以下ソースです。何かお気づきの点がありましたら指摘お願いいたします。 public class Rec extends Applet{ public void init(){ } public void start(){ try { showList(); } catch (PortInUseException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (NoSuchPortException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (InstantiationException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (IllegalAccessException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } public void showList() throws PortInUseException, NoSuchPortException, InterruptedException, InstantiationException, IllegalAccessException, ClassNotFoundException{ CommDriver driver = (CommDriver)Class.forName("com.sun.comm.Win32Driver").newInstance(); driver.initialize(); //ポートの指定 CommPortIdentifier id = CommPortIdentifier.getPortIdentifier("COM1"); //ポートを開く SerialPort port = (SerialPort)id.open("COM1", 1000); //RTSをFalseに port.setRTS(false); //1秒待機 Thread.sleep(1000); //ポートを閉じる port.close(); }

すると、全ての回答が全文表示されます。

関連するQ&A