OnCommについて


キム  2005-10-14 20:38:10  No: 126248

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 20:58:33  No: 126249

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


キム  2005-10-14 23:06:31  No: 126250

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


いな  2005-10-14 23:16:20  No: 126251

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

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


キム  2005-10-14 23:25:30  No: 126252

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

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


030  2005-10-14 23:34:37  No: 126253

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


ひでらん  2005-10-15 01:48:03  No: 126254

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

・STX + Data部 + ETX + BCC

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加