通过下面的代码已顺利实现与PLC通信,但是为什么输入软元件后,我点击“Command1”,“Text1.Text ”首先显示通信成功的代码,再次点击“Command1”,才出现我要的结果,为什么啊,整了一天没明白,求助csdn高手了???还有“Text1.Text ”若想显示大于65536的数怎么操作啊,多谢热心老鸟!!!
Private Sub Form_Load()
ExitFlag = False
MSComm1.CommPort = 3 '软件刚启动时对通讯参数进行设定
MSComm1.Settings = "9600,e,8,1"
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ' 打开通讯端口
MSComm1.Output = "cr" & vbCr '通讯初始化
End Sub
Private Sub Command1_Click()
Dim i As Long
If MSComm1.PortOpen = True Then MSComm1.Output = "rd " & Text2.Text & vbCr
'If MSComm1.PortOpen = True Then MSComm1.Output = "rd cm2060" & vbCr
Text1.Text = Left(MSComm1.Input, 8)
End Sub
Private Sub Form_Load()
ExitFlag = False
MSComm1.CommPort = 3 '软件刚启动时对通讯参数进行设定
MSComm1.Settings = "9600,e,8,1"
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ' 打开通讯端口
MSComm1.Output = "cr" & vbCr '通讯初始化
End Sub
Private Sub Command1_Click()
Dim i As Long
If MSComm1.PortOpen = True Then MSComm1.Output = "rd " & Text2.Text & vbCr
'If MSComm1.PortOpen = True Then MSComm1.Output = "rd cm2060" & vbCr
Text1.Text = Left(MSComm1.Input, 8)
End Sub
MSComm1.RThreshold设置为不等于零是实现OnComm接收事件的必要条件.
Private Sub Form_Load()
ExitFlag = False
MSComm1.CommPort = 3 '软件刚启动时对通讯参数进行设定
MSComm1.Settings = "9600,e,8,1"
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 0
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True ' 打开通讯端口
MSComm1.Output = "cr" & vbCr '通讯初始化
End Sub
Private Sub Command1_Click()
Dim i As Long
dim lngP as long
If MSComm1.PortOpen = True Then MSComm1.Output = "rd " & Text2.Text & vbCr
'If MSComm1.PortOpen = True Then MSComm1.Output = "rd cm2060" & vbCr
lngP=GetTickcount
do
Text1.Text = Left(MSComm1.Input, 8)
loop until Gettickcount-lngP>100
End Sub
当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。
MSComm1.Output = "rd " & Text2.Text & vbCr
End If
TimeDelay 200
Text1.Text = Left(MSComm1.Input, 8)
End SubPublic Sub TimeDelay(DT As Long)
'*延时程序(单位:毫秒)
On Error GoTo PROC_ERR
Dim tt As Long
tt = GetTickCount
Do
DoEvents
Loop Until GetTickCount - tt >= DT
End Sub
OnCommOnComm在学习中。谢谢各位好友。