请大侠帮忙把Vb代码改成DELPHI代码,谢谢!

cgh1970 cgh1970 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部