タイトル | : VB RS232C通信(MSComm使用) |
記事No | : 11249 |
投稿日 | : 2014/04/14(Mon) 17:26 |
投稿者 | : MON |
初めまして,教えていただけないでしょうか。 流れは ・PLC ⇒ OK+CRLF ⇒ PC(Port2受信) PC(Port1送信) ⇒ E[]+CRLF ⇒ レーザ印字開始
・レーザ印字完了 ⇒ END+CRLF ⇒ PC(Port1受信) PC(Port2送信) ⇒ E[]+CRLF ⇒ PLC次工程開始
各指令(OK,E[],END)を取りこぼすことなくバッファに取り込みたいです。 下記プログラムでよろしいでしょうか?
Private Sub Form_load() 'イニシャル MSComm1.CommPort = 1 'レーザー ⇔ PC MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 MSComm1.InBufferCount = 0 MSComm1.InputLen = 0
MSComm2.CommPort = 3 'PLC ⇔ PC MSComm2.Settings = "9600,N,8,1" MSComm2.PortOpen = True MSComm2.RThreshold = 1 MSComm2.SThreshold = 1 MSComm2.InBufferCount = 0 MSComm2.InputLen = 0 End Sub
'********** PLC -> PC -> レーザ刻印指令 *************** Private Sub MSComm2_OnComm() Dim Buffer10 As String ' 文字列型 Dim Buffer11 As String ' 文字列型 Dim Buffer12 As String ' 文字列型
Buffer10 = "" 'バッファ内クリアー
Do 'OK受信するまで待機 DoEvents() Buffer10 = Buffer10 & MSComm2.Input Loop Until InStr(Buffer10, vbCrLf)
Select Case MSComm2.CommEvent Case ComEvReceive Buffer11 = MSComm2.Input '受信バッファに転送 Text5.Text = Buffer11 '受信データ表示
If Buffer11 = "OK" Then Buffer12 = "E[]" MSComm1.Output = Buffer12 + vbCrLf 'レーザへ開始指令 End If
以下省略 End Select End Sub
'********** レーザ刻印完了 -> PC -> PLC次工程開始指令 **** Private Sub MSComm1_OnComm()
Dim Buffer00 As String ' 文字列型 Dim Buffer01 As String ' 文字列型 Dim Buffer02 As String ' 文字列型
Buffer00 = "" 'Bufferクリア
Do 'END受信するまで待機 DoEvents() Buffer00 = Buffer00 & MSComm2.Input Loop Until InStr(Buffer00, vbCrLf)
Select Case MSComm2.CommEvent Case ComEvReceive Buffer01 = MSComm1.Input '受信バッファに転送 Text3.Text = Buffer01 '受信データ表示
If Buffer01 = "END" Then 'PLCへ刻印完了指令 Buffer02 = "E[]" MSComm2.Output = Buffer02 + vbCrLf End if
以下省略 End Select End Sub
|