MsCommでモデム処理中にフォームを移動するには?

解決


SHIN  2003-04-07 21:18:16  No: 106579  IP: [192.*.*.*]

Form1で定周期(10ms)で通信を行っていて、コマンドイベントでForm2へ移動すると、「デバイスが開かれていません」というエラーが発生します。通信中にFormを移動する際には、何か操作が必要なのでしょうか?
また、Form2から下のエラー行に到達するまでに、Form1のLoadも実行しています。
宜しくお願い致します。

Private Sub Timer1_Timer()  <- Form1へ記述
    MSComm1.PortOpen = True
    
    Call Write_sci
    
    MSComm1.PortOpen = False <- この行にエラーが発生
End Sub

Write_sciで送受信を行っています。受信待ちに  DoEvents()  を記述しています。

編集 削除
ととろジョージ  2003-04-09 11:12:31  No: 106580  IP: [192.*.*.*]

こんにちは

>Form1で定周期(10ms)で通信を行っていて・・・・・
Errとは別なきがしますが処理は十分まにあってますか?


Private Sub Timer1_Timer()  <- Form1へ記述
    
    Call Write_sci
End Sub


sub Write_sci()
    Form1.MSComm1.PortOpen = True
    
       '今までの  Write_sciでの処理

    Form1.MSComm1.PortOpen = False 
End Sub

こちらの方法でもErrになりますか

編集 削除
ととろジョージ  2003-04-09 11:12:32  No: 106581  IP: [192.*.*.*]

こんにちは

>Form1で定周期(10ms)で通信を行っていて・・・・・
Errとは別なきがしますが処理は十分まにあってますか?


Private Sub Timer1_Timer()  <- Form1へ記述
    
    Call Write_sci
End Sub


sub Write_sci()
    Form1.MSComm1.PortOpen = True
    
       '今までの  Write_sciでの処理

    Form1.MSComm1.PortOpen = False 
End Sub

こちらの方法でもErrになりますか

編集 削除
ととろジョージ  2003-04-09 11:13:55  No: 106582  IP: [192.*.*.*]

すいません重複してしまいました

編集 削除
SHIN  2003-04-09 12:03:20  No: 106583  IP: [192.*.*.*]

ご提案の方法を試してみましたが、変わりませんでした。DoEventでFormを移動させてはダメなのでしょうか?
周期の件は、調べてみるとTimerでは精度がかなり悪いそうですね。もう少し余裕を持った周期にします。

編集 削除
ととろジョージ  2003-04-09 16:22:34  No: 106584  IP: [192.*.*.*]

ん〜  そうですか〜

>ご提案の方法を試してみましたが、変わりませんでした。DoEventでFormを移動させてはダメなのでしょうか?
試してはいませんけど  Formの切替かもしれませんね

私の場合は、ポートを一度オープンしたらアプリ終了まで閉じないように
してます。
私もFormを切替たことありましたが問題なしでしたよ


Private Sub Form_Load()
    Call Port開く
End sub


Sub Port開く()
With Form1
    If .MSComm1.PortOpen = False Then
        .MSComm1.Settings = "9600,n,8,1"
        .MSComm1.CommPort = 1
        .MSComm1.InputLen = 0  '全文字
        .MSComm1.InputMode = comInputModeBinary
        .MSComm1.InBufferSize = 2048
        .MSComm1.RTSEnable = False 'Sendライン
        .MSComm1.DTREnable = False '受信可能?
        .MSComm1.Handshaking = 2   ' 2
        .MSComm1.NullDiscard = False 'しない
        .MSComm1.PortOpen = True  '1開く
    End If
End With
End Sub

こんな感じだったんですが参考になるでしょうか
2日ほど出張ですがまたここへきてみます。

編集 削除
SHIN  2003-04-10 11:42:02  No: 106585  IP: [192.*.*.*]

フォームの移動は、ポートが閉じている間行うようにすれば、エラーは発生しなくなりました。
とりあえずは、これでなんとかします。

編集 削除
ととろジョージ  2003-04-11 21:09:56  No: 106586  IP: [192.*.*.*]

こんばんは

およっ    解決ですか?
すいません  お役にたてず

編集 削除