VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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バイトになってしまうという・・・
この先は調べてくださいね。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -