Hideterm.exeが終了し「ません。No.01978
CSS さん 01/07/16 16:17
 
こんにちは。初めて投稿します。

秀Term Evolution V4.44を使用して@NIFTYとパソコン通信を
行っています。
マクロの中でHungup時、秀Termを終了するコマンドを使用しているの
ですが、あるタイミングで「モデムデバイスエラー」となってしまします。
「電話をかける」を表示後、マクロを書いたホスト名を表示して数10秒後にこのメッ
セージが表示されます。

使用方法はプログラムの中から秀termをSHELL起動し、マクロからの戻り値
でエラーの場合、再起動させています。
モデムデバイスエラー発生時、Hideterm.exeプロセスが2つ残っているのを
確認しています。

秀TERMが終了しきれないことがあるのでしょうか。またその場合、どう対処したらい
いのでしょうか。
申し訳ありませんが教えていただけないでしょうか。お願いします。

マクロの一部を記載します。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    call NIF_LOGIN                     ; LOGIN 処理
    if( #return == "NG" )  goto NIF_ERR_LOGIN

    call NIF_IDPASS                    ; ID,PASSWORD 処理
    if( #return == "NG" )  goto NIF_ERR_IDPASS

    call NIF_SEND                      ; 送信処理
    if( #return == "NG" )  goto NIF_ERR_SEND

    call NIF_ERR_LOG
    afterhangup NIF_END
    hangup
NIF_END:
    closehideterm                      ; 秀TERM 終了
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[ ]
RE:01978 Hideterm.exeが終了し「ません。No.01979
秀まるお2 さん 01/07/16 17:11
 
> ですが、あるタイミングで「モデムデバイスエラー」となってしまします。

 そのエラーが出る原因は僕もよく分かりません。モデムによってどうしても
出る場合があるようです。

 で、このエラーが出る場合でも、電話自体はちゃんと切れているはずです。
もしちゃんと切れているのなら、「設定・動作環境」の「ダイヤル/切断方
法」の所で、「切断が確認できなくてもエラーメッセージを表示しない」をON
にすればいいです。それでエラーが出なくなります。

[ ]
RE:01979 Hideterm.exeが終了し「ません。No.01980
CSS さん 01/07/16 17:26
 
>もしちゃんと切れているのなら、「設定・動作環境」の「ダイヤル/切断方
>法」の所で、「切断が確認できなくてもエラーメッセージを表示しない」をON
>にすればいいです。それでエラーが出なくなります。

早速ありがとうございます。
試してみたんですがそれでもエラーが出てしまいます。
モデムはI-O DATAのDFML-560Eを使用しているのですがやはりモデムが原因でしょうか。
プログラムでマクロ終了検出後、間髪入れずに秀TERMを起動した場合、マクロで終了
させたHideterm.EXEが残っていることはありますか

[ ]
RE:01980 Hideterm.exeが終了し「ません。No.01981
秀まるお2 さん 01/07/16 17:55
 
 すみません。話を全然理解してませんでした。電話を切る時じゃなくて、電
話をかける時にエラーになるんですね。

 具体的なエラーコードを教えていただければ何が原因か分かる可能性が高い
ですが、hideterm.exeが2つ起動しているって話なら、もしかして2つの秀
Termがともにモデムを使おうとして失敗しているのかもしれないです。

> プログラムでマクロ終了検出後、間髪入れずに秀TERMを起動した場合、マクロで終了
> させたHideterm.EXEが残っていることはありますか

 具体的なマクロ(というか、秀Termスクリプト?)の内容を教えていただけ
れば正確にコメントできると思いますが、「終了させてから起動する」ってや
ってるんじゃなくて、「起動させてから終了させている」んじゃないでしょう
か?。だとしたら、一時的に秀Termが2つ起動することになります。

 ただし、秀Termが2つ起動しただけではモデムデバイスエラーにはならない
はずなので、1つ目の秀Termがちゃんとモデムを解放したことを確認して、し
ばらく間を置いてから2つ目の秀Termを起動すればいいと思います。

 例えば、afterhangup文で起動されるスクリプトで何か処理するなら、

    sleep 2
    run "hideterm.exe ホスト名";
    closehideterm


 とするか、またはそれでもダメな場合は

    sleep 2
    run "hideterm.exe /s wait.hsc"
    closehideterm

 としておいて、wait.hscの内容として、

    sleep 2
    connect "ホスト名"

 とする等すればいいと思います。

[ ]
RE:01981 Hideterm.exeが終了し「ません。No.01983
CSS さん 01/07/17 10:27
 

モデムデバイスエラー発生時のエラーコードは0x80000005です。
エラーが発生するのは、「電話をかける」になって秀TERMの
通信状態を表示する個所にホスト名を表示したところで発生します。
但し、正常終了する場合もあります。
スクリプト(ホスト名)のLOGIN待ち処理まで動いているのかは不明です。

このエラー発生時にプロセス(WindowsNT TASKMAN)を確認すると
HIDETERM.EXEが2つ残った状態になっています。
ホストプロパティで「モデムを直接制御」にしていないのですが
関係しているのでしょうか。

プログラムからははこんな感じで秀TERMを起動しています。
   HideTerm.exeを起動(ホスト名)

  −−−正常受信完了するまで繰り返します−−−−−−−
  |                                             |
  | スクリプトから返すステータスファイルを監視     |
  |                                             |
  | ステータスがエラーであればHideTerm.exeを再起動 |
  −−−−−−−−−−−−−−−−−−−−−−−−−−                      
                          |

スクリプト(すみませんマクロではないですよね)では
hangup時は何もしないで秀TERMを終了させています。

MAIN:
    @nif_err1 ="0"                     ; ERR1
    %NIFID        = "********"
    %%NifPassword = "********"
    keyboard off
    createfile "TRANHIST.TXT"          ; 送信履歴ファイル初期化
    closefile "TRANHIST.TXT"           ;
    sleep 4
    call NIF_LOGIN                     ; LOGIN 処理
    if( #return == "NG" )  goto NIF_ERR_LOGIN
    call NIF_IDPASS                    ; ID,PASSWORD 送信処理
    if( #return == "NG" )  goto NIF_ERR_IDPASS
    call NIF_RECV                      ; 受信処理
    if( #return == "NG" )  goto NIF_ERR_RECV
    call NIF_ERR_LOG
    afterhangup NIF_END
    hangup
NIF_END:
    closehideterm                      ; 秀TERM 終了
return

何度もすみませんがよろしくお願いします。


[ ]
RE:01983 Hideterm.exeが終了し「ません。No.01985
秀まるお2 さん 01/07/17 11:39
 
 まいどどうも。

> モデムデバイスエラー発生時のエラーコート゛は0x80000005です。

 そのエラーは、LINEERR_CALLUNAVAILということで、モデムが他で使われて
いるというエラーのようです。

 例えば「ダイヤルアップネットワーク」の方でモデムを使っている時に、秀
Term側でダイヤルしようとしたりすると発生します。

 秀Termの起動は独自のプログラムで行われているとのことなので、たぶんそ
この処理をうまく工夫すればなんとかなると思います。具体的には、例えばC
言語で作られたソフトなら、FindWindow()のAPIで秀Termが居る場合はそれが
終了するのを待ってから秀Termを起動するようにするとかすればいいと思いま
す。面倒なら、とりあえず3秒くらい待ってから秀Termを起動するように修正
すればかなり安定すると思います。

 ちなみに秀Termのウィンドウクラス名は "HideTermFrameClass" です。

[ ]
RE:01985 Hideterm.exeが終了し「ません。No.01987
K.S さん 01/07/18 14:58
 
はじめまして。
CSSと同じ作業をしているK.Sと申します。
本日、CSSが都合によりおりませんので、私が代わりに質問させて頂き
ます。どうぞよろしくお願い致します。


> 秀Termの起動は独自のプログラムで行われているとのことなので、たぶんそ
>この処理をうまく工夫すればなんとかなると思います。具体的には、例えばC
>言語で作られたソフトなら、FindWindow()のAPIで秀Termが居る場合はそれが
>終了するのを待ってから秀Termを起動するようにするとかすればいいと思いま
>す。面倒なら、とりあえず3秒くらい待ってから秀Termを起動するように修正
>すればかなり安定すると思います。


秀Termが終了するまで待つ処理を入れてみました。
終了後にもう一度秀Termを起動させるという処理を入れていなかったので
すが、何故か秀Termが起動されました。
そして起動がかかった後、ダイヤル中に同じモデムデバイスエラーのメッセ
ージが表示されてしまいました。

原因が分かりませんので、よろしくお願い致します。

[ ]
RE:01987 Hideterm.exeが終了し「ません。No.01988
秀まるお2 さん 01/07/18 15:08
 
> そして起動がかかった後、ダイヤル中に同じモデムデバイスエラーのメッセ
> ージが表示されてしまいました。

 同じエラーコードが出たのなら、やはりモデムが使用中という意味のはずな
ので、んではモデムが解放されるまでもうちょっと待ち時間を入れてみてはど
うでしょ?

 FindWindowで秀Termの終了を確認してからさらに5秒くらい待たせるとか…。

[ ]
RE:01988 Hideterm.exeが終了し「ません。No.01989
K.S さん 01/07/18 15:30
 


> 同じエラーコードが出たのなら、やはりモデムが使用中という意味のはずな
>ので、んではモデムが解放されるまでもうちょっと待ち時間を入れてみてはど
>うでしょ?
>
> FindWindowで秀Termの終了を確認してからさらに5秒くらい待たせるとか…。


どうもありがとうございます。試してみます。

ところで、終了後にもう一度秀Termを起動する処理を入れていないのに、
起動がかかってしまった件なのですが、何故でしょうか?
秀Termには通信に失敗した際、自動的に秀Termが立ち上がり電話をかけに
行くという機能があるのでしょうか?

何度も申し訳ありません・・・。よろしくお願い致します。



[ ]
RE:01989 Hideterm.exeが終了し「ません。No.01990
秀まるお2 さん 01/07/18 17:18
 
> ところで、終了後にもう一度秀Termを起動する処理を入れていないのに、
> 起動がかかってしまった件なのですが、何故でしょうか?
> 秀Termには通信に失敗した際、自動的に秀Termが立ち上がり電話をかけに
> 行くという機能があるのでしょうか?

 はて、秀Termが勝手に再起動することは無いはずです。スクリプトで例えば

   run "hideterm.exe"
   closehideterm

 とやれば再起動したように見えますけど。

[ ]
RE:01988 Hideterm.exeが終了し「ません。No.01993
CSS さん 01/07/25 14:20
 
> FindWindowで秀Termの終了を確認してからさらに5秒くらい待たせるとか…。
問題が解決しましたのでお知らせします。
原因はMODEMの回線速度だったようです。MODEM回線速度の初期設定をしないとMODEM
が電話回線の品質等自動判定し通新規格(bis)の自動設定をおこなうそうです。今回
は40000bps(V.90bis)になっていたようでNIFTY(V.42bis)の
アクセスポイントに接続しにくい状況にあったようです。
秀TERMのホストプロパティで「モデムを直接制御する」にして、モデム初期化コマン
ドを設定(最大転送速度33600)することで正常に通信できるようになりました。
いろいろありがとうございました。

[ ]