读书人

VB数据处理有关问题

发布时间: 2012-03-01 10:25:47 作者: rapoo

VB数据处理问题
...
MSComm1.Settings = "115200,N,8,1"
MSComm1.InputMode = 1
MSComm1.InputLen = 0
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
...
Private Sub MSComm1_OnComm()
On Error Resume Next
Dim BytesReceived() As Byte
Dim buffer As String
Dim data(0 To 31) As Byte
Dim temp(0 To 3) As Byte
Dim value(0 To 6) As Integer
Dim vvalue(0 To 6) As Double
Dim fvalue(0 To 6) As Double
Select Case MSComm1.CommEvent
Case comEvCD
Case comEvCTS
Case comEvRing
Case comEvReceive
MSComm1.InputLen = 0
buffer = MSComm1.Input
BytesReceived() = buffer

For i = 0 To 31
data(i) = BytesReceived(i)
Next

If data(0) = 170 And data(1) = 170 And data(30) = 187 And data(31) =187 Then

temp(0) = data(2)
temp(1) = data(3)
temp(2) = data(4)
temp(3) = data(5)
CopyMemory value(0), temp(0), 4
vvalue(0) = Format(value(0), "0.000000 ")

temp(0) = data(6)
temp(1) = data(7)
temp(2) = data(8)
temp(3) = data(9)
CopyMemory value(1), temp(0), 4
vvalue(1) = Format(value(1), "0.000000 ")

temp(0) = data(10)
temp(1) = data(11)
temp(2) = data(12)
temp(3) = data(13)
CopyMemory value(2), temp(0), 4
vvalue(2) = Format(value(2), "0.000000 ")

temp(0) = data(14)
temp(1) = data(15)
temp(2) = data(16)
temp(3) = data(17)
CopyMemory value(3), temp(0), 4
vvalue(3) = Format(value(3), "0.000000 ")

temp(0) = data(18)
temp(1) = data(19)
temp(2) = data(20)
temp(3) = data(21)
CopyMemory value(4), temp(0), 4
vvalue(4) = Format(value(4), "0.000000 ")

temp(0) = data(22)
temp(1) = data(23)
temp(2) = data(24)
temp(3) = data(25)
CopyMemory value(5), temp(0), 4
vvalue(5) = Format(value(5), "0.000000 ")

temp(0) = data(26)
temp(1) = data(27)
temp(2) = data(28)
temp(3) = data(29)


CopyMemory value(6), temp(0), 4
vvalue(6) = Format(value(6), "0.000000 ")

#####

For i = 0 To 6
fvalue(i) = vvalue(i) * 5 / 419430

chanel1(i).Text = Format(fvalue(i), "0.000000 ")

Next
Print #1, Format(fvalue(0), "0.000000 ") & Space(15 - Len("fvalue (0)")) & "" & _
Format(fvalue(1), "0.000000 ") & Space(15 - Len("fvalue (1)")) & "" & _
Format(fvalue(2), "0.000000 ") & Space(15 - Len("fvalue (2)")) & "" & _
Format(fvalue(3), "0.000000 ") & Space(15 - Len("fvalue (3)")) & "" & _
Format(fvalue(4), "0.000000 ") & Space(15 - Len("fvalue (4)")) & "" & _
Format(fvalue(5), "0.000000 ") & Space(15 - Len("fvalue (5)")) & "" & _
Format(fvalue(6), "0.000000 ") & Space(15 - Len("fvalue (6)"))
End If
Case comEvSend
End Select
End Sub

定时器每200ms发送指令EB给下位机,上位机接受到的数据格式如下:
AA AA FF FF E3 D5 FF FF E3 D5 FF FF E3 D5 FF FF E3 D5 FF FF E3 D5 FF FF E3 D5 FF FF E3 D5 BB BB
起始:AA AA
终止:BB BB
中间的数据需要解析,第一次用VB,对语法不是特别清楚,不知道是哪里出了问题,#####处,十六进制代码都是正确的,但是后面的数据解析出了问题,请高手指教,不胜感激.

[解决办法]
你temp字节数组4字节,你value元素是integer两字节,怎么放下四字节内容。

重新定义你的Dim value(0 To 6) As Integer为dim value(0 to 6) as long试一下

CopyMemory value(0), temp(0), 4

读书人网 >VB

热点推荐