タイトル : VB RS232C通信(MSComm使用) 投稿日 : 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 |