这是本人对上面做的程序:(VB测试成功,PLC硬件需在RUN状态)
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim in_buffer As String
Private Sub Command1_Click() '要求PLC停止
MSComm1.Output = Chr(5) + "00FFRS0C1"
Call stx_receive(in_buffer)
Text1.Text = in_buffer
End Sub
Private Sub Command2_Click() '要求PLC启动
MSComm1.Output = Chr(5) + "00FFRR0C0"
Call stx_receive(in_buffer)
Text2.Text = in_buffer
in_buffer = ""
End Sub
Private Sub Command3_Click()'重启(先停后开,笨方法)
MSComm1.Output = Chr(5) + "00FFRS0C1"
Call stx_receive(in_buffer)
Text1.Text = in_buffer
in_buffer = ""
Sleep 2000
MSComm1.Output = Chr(5) + "00FFRR0C0"
Call stx_receive(in_buffer)
Text1.Text = in_buffer
in_buffer = ""
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,7,1"
MSComm1.PortOpen = True
End Sub
Public Sub stx_receive(in_buffer)
Dim delay_time As Double
Dim delay_start As Double
Dim delay_chk As Double
delay_time = 0.1
delay_start = Timer
Do
delay_chk = delay_start + delay_time
Loop Until Timer > delay_chk
in_buffer = MSComm1.Input
If Left(in_buffer, 1) = Chr(6) Then
in_buffer = "OK"
Else
in_buffer = "NO-OK"
End If
MSComm1.InBufferCount = 0
End Sub
最后修改:2014/2/9 14:00:01