dataGrid和MSComm
小弟要用VB做个应用,把单片机里采集到的数据在电脑上显示出来。我设计的VB界面用到dataGrid和MSComm控件各一个,再加一个command按纽作退出,不知道能不能实现。MSCcomm的接收程序应该怎么编写?怎样实现dataGrid中显示多组数据(就像一个表第一列是显示项,后面每一行各页对应形式一组数据。)
小弟对VB很陌生,又必须要用,恳请各位高手指点!!
--------------------编程问答-------------------- MSDN里都有,建议查看MSDN --------------------编程问答-------------------- 如果不保存数据,可用MSFlexGrid控件来显示接收的数据,以下代码中是按2进制接收的:
Option Explicit--------------------编程问答-------------------- 单片机的通讯协议?
Dim sum As Integer
Dim strData As String
Dim bytInput() As Byte
Private Sub Form_Load()
sum = 1
MSFlexGrid1.Cols = 5
MSFlexGrid1.Rows = sum
MSFlexGrid1.TextMatrix(0, 0) = "Time"
MSFlexGrid1.TextMatrix(0, 1) = "Data1"
MSFlexGrid1.TextMatrix(0, 2) = "Data2"
MSFlexGrid1.TextMatrix(0, 3) = "Data3"
MSFlexGrid1.TextMatrix(0, 4) = "Data4"
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End Sub
Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
Me.MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = Me.MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = Me.MSComm1.Input
jieshou
If Mid(strData, 1, 2) = "0D" And Len(strData) = 20 Then
sum = sum + 1
MSFlexGrid1.Rows = sum
MSFlexGrid1.TextMatrix(sum - 1, 0) = Time$
MSFlexGrid1.TextMatrix(sum - 1, 1) = Mid(strData, 3, 6)
MSFlexGrid1.TextMatrix(sum - 1, 2) = Mid(strData, 9, 6)
MSFlexGrid1.TextMatrix(sum - 1, 3) = Mid(strData, 15, 4)
MSFlexGrid1.TextMatrix(sum - 1, 4) = Mid(strData, 19, 2)
strData = ""
End If
End Select
End Sub
Public Function jieshou() '接收数据处理为16进制字符
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
End Function
有什么样的数据,如何显示? --------------------编程问答-------------------- 我用EXCEL VBA写的例子,仅供参考。
http://download.csdn.net/source/1048888
补充:VB , 控件