求助!用VB6.0实现PC机与单片机串口通讯 急!!!在线等待
毕业设计:用RS-232连接单片机与PC机,用vb将单片机中采集的数据(数据是一个一个采集,有一个数据就传一个到PC机上)传到PC机上并用VB编写代码在PC机上显示出来。关于通信协议暂不知道,怎样编写代码将数据接收过来(数据是小数 例66.84)用Mscomm控件实现,急!!! --------------------编程问答-------------------- 参考一下:http://www.mndsoft.com/blog/article.asp?id=382 --------------------编程问答-------------------- 这也是一个示例,仅供参考:'*/-------------------------------------------------------------
'*/函 数 名:ReadPort
'*/功 能:读取数据通用函数
'*/返 回 值:字符
'*/参 数:RecordID 字符 记录序号指针,可变
' MemoryType 字符 存储器型号24铁电(保存参数用,ID:10) 39Flash(保存数据用,ID:01)
' HljAddre 字符
'*/建立日期:2004-12-26
'*/修改日期:2005-12-26 修正部分
'*/-------------------------------------------------------------
Function ReadPort(MemoryType As String, HAddress As String, RecordID As String) As String
Dim i As Integer
Dim ii As Integer
Dim S_Buffer(9) As Byte
Dim R_Buffer() As Byte
Dim SendStr As String
'前置码
S_Buffer(0) = &H55
S_Buffer(1) = &HAA
S_Buffer(2) = &H2A
S_Buffer(3) = "&H" & HAddress '下位机地址
If HAddress = "80" Then
S_Buffer(4) = &H80 '格式化
Else
S_Buffer(4) = "&H" & Trim$(MemoryType) '存储器型号ID
End If
S_Buffer(5) = &H0
S_Buffer(6) = &H0
'大于255,低位在前,高位在后
If Val("&H" & RecordID) > 255 Then
S_Buffer(7) = "&H" & IIf(Len(RecordID) = 3, Left$(RecordID, 1), Left$(RecordID, 2))
S_Buffer(8) = "&H" & Right$(RecordID, 2) '记录序号指针
Else
S_Buffer(7) = &H0
S_Buffer(8) = "&H" & RecordID '记录序号指针
End If
'异或码
S_Buffer(9) = "&H" & S_Buffer(3) Xor S_Buffer(4) Xor S_Buffer(7) Xor S_Buffer(8)
For i = 0 To UBound(S_Buffer)
SendStr = SendStr & Space$(1) & IIf(Len(Hex$(S_Buffer(i))) = 1, "0" + Hex$(S_Buffer(i)), Hex$(S_Buffer(i)))
Next
If Check2.Value = False Then
sendTextBox = sendTextBox & "发" & Format$(Trim$(Str$(Val("&H" & RecordID) + 1)), "000") & "行 " & SendStr & vbCrLf
End If
TextCmd = Trim$(SendStr)
MSComm1.Output = S_Buffer
If Val(MemoryType) = 80 Then
'延时50ms
Sleep (600)
Else
'延时50ms
Sleep (50)
End If
'让系统处理其他事
DoEvents
ReadData:
Do Until MSComm1.InBufferCount > 0
If MSComm1.InBufferCount = 0 Then
Exit Do
End If
Loop
'读取端口
R_Buffer = MSComm1.Input
'判断缓冲区是否完整
If UBound(R_Buffer) = 13 Then
For i = 0 To UBound(R_Buffer)
ReadPort = ReadPort & Space$(1) & IIf(Len(Hex$(R_Buffer(i))) = 1, "0" + Hex$(R_Buffer(i)), Hex$(R_Buffer(i)))
Next
Else
If UBound(R_Buffer) = 0 Then
ReadPort = Hex$(R_Buffer(0))
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
ReadPort = "80"
Exit Function
End If
Erase R_Buffer
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Output = S_Buffer
Sleep (50)
If ii < 265 Then
ii = ii + 1
'Debug.Print ii
GoTo ReadData
Else
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
ReadPort = "1"
Exit Function
End If
End If
End Function --------------------编程问答-------------------- 谢谢,先看一下 --------------------编程问答-------------------- 不明LZ在说什么 --------------------编程问答-------------------- 不明LZ在说什么
补充:VB , 资源