请大侠帮忙把Vb代码改成DELPHI代码,谢谢!
Option Explicit
Dim qq As Integer
Private Sub Command1_Click()
If Command1.Caption = "OPEN" Then
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = CInt(Combo1.Text)
Timer1.Enabled = True
Command1.Caption = "CLOSE"
Else
Timer1.Enabled = False
Command1.Caption = "OPEN"
qq = 0
Label1.Caption = CStr(qq)
End If
End Sub
Private Sub Form_Load()
Combo1.ListIndex = 7
Combo2.ListIndex = 0
qq = 0
End Sub
Private Sub Timer1_Timer()
Dim Outadress(0) As Byte
Dim OutData(6) As Byte
Timer1.Enabled = False
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Else: MSComm1.PortOpen = True
End If
'MSComm1.Settings = "9600,m,8,1"
Outadress(0) = StrConv(CInt(Combo2.Text), vbFromUnicode)
'MSComm1.InputLen = 0
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
MSComm1.Output = Outadress
'Pausett
Label2.ForeColor = &HFE
MSComm1.Settings = "9600,s,8,1"
OutData(0) = 2
OutData(1) = 254 '&HFE
OutData(2) = 0
OutData(3) = 0
OutData(4) = 0
OutData(5) = 0
OutData(6) = 1 'StrConv(CInt(Combo2.Text), vbFromUnicode)
Text5.Text = OutData(1)
MSComm1.RThreshold = 92
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Output = OutData
qq = qq + 1
Label1.Caption = CStr(qq)
Timer1.Enabled = True
End Sub
Private Sub MSComm1_OnComm()
Dim InBuffer
Dim i As Integer
Dim a As Double, b As Integer, iSign As Integer
Dim iCrc As Integer
If MSComm1.CommEvent = comEvReceive Then
InBuffer = MSComm1.Input
For i = 0 To 90
If IsNumeric(InBuffer(i)) = True Then
DoEvents
iCrc = iCrc + InBuffer(i)
Text4.Text = iCrc
End If
Next
iCrc = iCrc Mod 256
If iCrc = InBuffer(91) Then
If InBuffer(15) > 127 Then
iSign = -1
InBuffer(15) = InBuffer(15) - 128
Else
iSign = 1
End If
a = InBuffer(15) * 65536 * 256 + InBuffer(14) * 65536 + InBuffer(13) * 256 + InBuffer(12)
a = Int((a + (InBuffer(11) * 256 + InBuffer(10)) / 65536) * 1000 * iSign + 0.5) / 1000
Text1.Text = Format(a, "#0.00")
If InBuffer(2) > 127 Then
iSign = -1
InBuffer(2) = InBuffer(2) - 128
Else
iSign = 1
End If
If InBuffer(3) > 127 Then
b = InBuffer(3) - 256
Else
b = InBuffer(3)
End If
a = InBuffer(2) * 65536 + InBuffer(1) * 256 + InBuffer(0)
a = a * 2 ^ (b - 23) * iSign
a = Int(a * 1000 + 0.5) / 1000
Text2.Text = Format(a, "#0.00")
iSign = IIf(InBuffer(82) > 127, -1, 1)
If iSign = -1 Then InBuffer(82) = InBuffer(82) - 128
b = IIf(InBuffer(83) > 127, InBuffer(83) - 256, InBuffer(83))
a = InBuffer(82) * 2 ^ 16 + InBuffer(81) * 2 ^ 8 + InBuffer(80) * 2 ^ 0
a = a * 2 ^ (b - 23) * iSign
Text3.Text = Format(a, "#0.00")
End If
End If
End Sub
Private Sub Pausett(Optional pInterval As Single = 0.01)
Dim dt As Single, odt As Single
dt = Timer: odt = dt
Do
odt = Timer
If odt < dt Then dt = odt
DoEvents
Loop While odt < dt + pInterval
End Sub