投稿日 | : 2005/04/26(Tue) 22:36 |
投稿者 | : わたしき |
Eメール | : |
URL | : |
タイトル | : Re: MSCommについて |
> VB6.0を使用しています。
> 機器とパソコンを232Cで通信しているのですが、
> 機器の電源を立ち上げた時にハード的にHEXでE0を吐き出して来てしまいます。
> EOの時はキャンセルしたいのですが、Inputを変数(Buffer)に入れる1行(B)を処理するのに1
5秒
> 程度かかってしまってます。(約850Mhzのパソコンで)
> InputModeをcomInputModeBinary(Aをコメントして@を使用)にすると直ぐに処理できるのです
が
> 変数(Buffer)にMSComm1.Inputがうまく入らず他の通信が出来ない状態です。
> (色々変換してみたのですが・・・)
>
> またパソコン同士を232CでつないでE0を送っても同じような状態でした。
>
> E0のデータがきても処理に時間が掛からない方法、InputModeがcomInputModeBinary
> の時の扱い方など何か良い方法がありましたら教えて下さい。
>
> 232Cの設定(制御線は使用していません。)
> Private Sub Form_Load()
> With MSComm1
> .InBufferSize = 1024
> .OutBufferSize = 1024
> .InputLen = 1
> .RThreshold = 1
> .CommPort = 1
> .Settings = "38400,N,8,1"
> .PortOpen = True
> End With
> End Sub
>
> Private Sub MSComm1_OnComm()
> Dim buffer As Variant
> Select Case MSComm1.CommEvent
> Case comEvReceive
> 'MSComm1.InputMode = comInputModeBinary '@
> MSComm1.InputMode = comInputModeText 'A
> buffer = MSComm1.Input 'B
> End Select
> End Sub
なかなか面白い苦肉の策ですね。
センスがどうこう言われる筋合いは無いと思いますが。
ところで、PCと、起動時&hE0を吐き出す機器、どちらが上位なんでしょうか?
PCがマスターで接続機器がスレーブなのであれば、
PCはリクエストするまで機器から勝手に送信されたコードは無視すれば良いだけかと。
リクスト前にバッファをクリアすればよいのではないでしょうか。
要はOnCommイベントを使わない事です。
そしてテキストで1バイト受信すると、2バイトになってしまうという・・・
この先は調べてくださいね。