发表于:2009/3/26 11:29:19
#0楼
我在用VB编写控制界面,用232接口,下面是我的程序,运行后,TXD和RXD一直在闪但是置不了位,哪位高手分析下什么地方出了问题
Sub set_on_off(ByVal a As String, ByVal b As String)
Dim setstr, setstr1 As String
setstr = "00FFBT001" + a + b
setstr1 = Chr$(&H5) + "00FFBT001" + a + b + sumcheck(setstr)
Do
MSComm1.Output = setstr1
DoEvents
Loop Until MSComm1.Input = Chr$(&H6) + "00FF"
End Sub
Function sumcheck(ByVal inoroutstr As String) As String
Dim lenstr1, lenstr2, i, sum As Integer
Dim tempsum As String
lenstr1 = Len(inoroutstr) ''取出要求和校验字符串长度
sum = 0
For i = 1 To lenstr1 ''进行ASCII码求和
sum = sum + Hex$(Asc(Mid$(inoroutstr, i, 1)))
Next i
tempsum = Str$(sum)
lenstr2 = Len(tempsum)
If lenstr2 = 1 Then ''如果转换结果是1位,加零
tempsum = "0" + tempsum
ElseIf lenstr2 > 2 Then ''如果转换结果大于2位,取最后两位
tempsum = Mid$(tempsum, lenstr2 - 1, 2)
End If
sumcheck = tempsum
End Function
Private Sub Command3_Click()
MSComm1.PortOpen = False
End
End Sub
Private Sub Command4_Click()
Shape1.FillColor = &HFF&
Call set_on_off("Y0000", "1")
End Sub
Private Sub Command5_Click()
Shape1.FillColor = &H40&
Call set_on_off("Y0000", "0")
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,E,7,1"
MSComm1.InputMode = comInputModeText
MSComm1.Handshaking = comNone
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.PortOpen = True
End Sub
Sub set_on_off(ByVal a As String, ByVal b As String)
Dim setstr, setstr1 As String
setstr = "00FFBT001" + a + b
setstr1 = Chr$(&H5) + "00FFBT001" + a + b + sumcheck(setstr)
Do
MSComm1.Output = setstr1
DoEvents
Loop Until MSComm1.Input = Chr$(&H6) + "00FF"
End Sub
Function sumcheck(ByVal inoroutstr As String) As String
Dim lenstr1, lenstr2, i, sum As Integer
Dim tempsum As String
lenstr1 = Len(inoroutstr) ''取出要求和校验字符串长度
sum = 0
For i = 1 To lenstr1 ''进行ASCII码求和
sum = sum + Hex$(Asc(Mid$(inoroutstr, i, 1)))
Next i
tempsum = Str$(sum)
lenstr2 = Len(tempsum)
If lenstr2 = 1 Then ''如果转换结果是1位,加零
tempsum = "0" + tempsum
ElseIf lenstr2 > 2 Then ''如果转换结果大于2位,取最后两位
tempsum = Mid$(tempsum, lenstr2 - 1, 2)
End If
sumcheck = tempsum
End Function
Private Sub Command3_Click()
MSComm1.PortOpen = False
End
End Sub
Private Sub Command4_Click()
Shape1.FillColor = &HFF&
Call set_on_off("Y0000", "1")
End Sub
Private Sub Command5_Click()
Shape1.FillColor = &H40&
Call set_on_off("Y0000", "0")
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "9600,E,7,1"
MSComm1.InputMode = comInputModeText
MSComm1.Handshaking = comNone
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.PortOpen = True
End Sub
[此贴子已经被作者于2009-3-28 10:15:42编辑过]