OnCommについて


キム  2005-10-14 11:38:10  No: 126248  IP: [192.*.*.*]

PLCとRS232-Cで通信を行っています。VB初心者です。
PLCにデータを送信しOnCommイベントで1文字ずつ受信を行っているのですが、
全て受信してからそれに対する処理を行いたいのですが、全て受信したというタイミングを取ることができません。どうしたらよいでしょうか?
設定は、
MSComm1.RThreshold = 1              
MSComm1.SThreshold = 1 

OnComm内容は、
Private Sub MSComm1_OnComm()
    Dim Buffer
    Dim t() As Byte
    Select Case MSComm1.CommEvent                       
        Case comEvReceive                               
                    Buffer = MSComm1.Input              
                    Text1.Text = Text1.Text & Buffer    
    End Select
End Sub

編集 削除
いな  2005-10-14 11:58:33  No: 126249  IP: [192.*.*.*]

受信した、パケットレングスの長さは、
通常先頭行に書かれているはずですが?

編集 削除
キム  2005-10-14 14:06:31  No: 126250  IP: [192.*.*.*]

受信した値は、
00FF02(15 30 30 46 46 30 32)
です。特に、パケットレングスはないです。
PLCのほうのプログラムでCRLFをデータの最後に付加させるしかいですかね。。。?

編集 削除
いな  2005-10-14 14:16:20  No: 126251  IP: [192.*.*.*]

> パケットレングスはないです。

無いということは、パケットロスしたかどうかなども
判断できないということですか?

編集 削除
キム  2005-10-14 14:25:30  No: 126252  IP: [192.*.*.*]

PLCのデータを読込む場合は、
受信データ
00FF00000DF
であり、最後の2文字DFがサムチェックでデータのチェックを行っています。

上記の受信の場合
00FF02(15 30 30 46 46 30 32)
は、PLCへ書込みをした応答であり特にチェックはありません。

編集 削除
030  2005-10-14 14:34:37  No: 126253  IP: [192.*.*.*]

通信仕様が分からないので適当ですが
最初の0x15で電文の最初で次の0x15で電文の最後
その後に来る1バイトのチェックサム受信で電文受信完了と
いうことでいいんじゃないんですか?

編集 削除
ひでらん  2005-10-14 16:48:03  No: 126254  IP: [192.*.*.*]

よくわからないけど、フォーマットはこうですかね?

・STX + Data部 + ETX + BCC

上記と仮定すると、ETXを受信したら次の1文字を
受信して終了で駄目ですかね?

※この手のフォーマットの場合Data部にSTX/ETXが
  来ない様になっている筈。

編集 削除