主题:RS232转485的控制
我是新手,请DX指点:
见附件原理图,用RS232的第7脚(RTS)来控制MAX487的收发(MAX487的第2、3脚并联):开始发送前将RTS置高(MAX487发送状态),一帧数据发完后再将RTS置低(等待接收数据)。程序如下。
结果是:从波形看,还没等到第一个字节发完,RTS脚就变低了(MAX487的数据就发不出去了),为什么?
Private Sub CmdSend_Click()
Dim x(5) As Byte
If MSComm1.PortOpen Then
MSComm1.RTSEnable = True
x(0) = &HF4
x(1) = &HF5
x(2) = &H5
x(3) = &H0
x(4) = &H1
MSComm1.Output = b()
End If
End Sub
Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "9600,N,8,1"
.InBufferCount = 0
.OutBufferCount = 0
.InputMode = comInputModeBinary
.InputLen = 1
.SThreshold = 1
If .PortOpen = False Then
.PortOpen = True
End If
End With
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvSend
If (MSComm1.OutBufferCount = 0) Then
MSComm1.RTSEnable = False
End If
End Select
End Sub
见附件原理图,用RS232的第7脚(RTS)来控制MAX487的收发(MAX487的第2、3脚并联):开始发送前将RTS置高(MAX487发送状态),一帧数据发完后再将RTS置低(等待接收数据)。程序如下。
结果是:从波形看,还没等到第一个字节发完,RTS脚就变低了(MAX487的数据就发不出去了),为什么?
Private Sub CmdSend_Click()
Dim x(5) As Byte
If MSComm1.PortOpen Then
MSComm1.RTSEnable = True
x(0) = &HF4
x(1) = &HF5
x(2) = &H5
x(3) = &H0
x(4) = &H1
MSComm1.Output = b()
End If
End Sub
Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "9600,N,8,1"
.InBufferCount = 0
.OutBufferCount = 0
.InputMode = comInputModeBinary
.InputLen = 1
.SThreshold = 1
If .PortOpen = False Then
.PortOpen = True
End If
End With
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvSend
If (MSComm1.OutBufferCount = 0) Then
MSComm1.RTSEnable = False
End If
End Select
End Sub