首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB数据处理有关问题

2012-03-01 
VB数据处理问题...MSComm1.Settings 115200,N,8,1MSComm1.InputMode 1MSComm1.InputLen 0MSComm1.

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

热点排行