...
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,对语法不是特别清楚,不知道是哪里出了问题,#####处,十六进制代码都是正确的,但是后面的数据解析出了问题,请高手指教,不胜感激.
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,对语法不是特别清楚,不知道是哪里出了问题,#####处,十六进制代码都是正确的,但是后面的数据解析出了问题,请高手指教,不胜感激.
解决方案 »
- 请教在VB里如何控制EXCEL文件的问题
- 用什么方法实现像Photoshop的渐变填充效果?????
- 如何用vb打开autocad和PDF文件?
- 请问表格控件的打印原理!
- 为什么我的程序在退出以后还在内存中?而必须要用结束任务的方式才能彻底关闭?
- adodb.stream的问题,急!!
- 如何获取指定网址下的子目录文件列表?
- 为何现在速度这么快?而白天慢的根蜗牛似的,难道大家都下班了?快的感觉好爽!可是白天。。。真受不了!!!!
- (求助)如果用Dom提交表单后不弹出IE窗口
- 别的电脑运行正常,我的电脑代码运行出错
- 急求~~两个listbox,一个盛放字体名,另一个会出现相对应的字体
- DataList连接成绩表,DataGrid连接基本情况表,怎样点击列表中的姓名,在网格内显示该姓名的成绩?
数组地址及长度的用法都有问题。
temp(0) = data(5)
temp(1) = data(4)
temp(2) = data(3)
temp(3) = data(2)
谢谢大家.