单片机与计算机通信

chenguang03 2007-07-16 01:37:02
哪位大侠能教我编一个用VB语言,PC与单片机进行串口通讯的程序,串口RS232,波特率4800
...全文
703 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenguang03 2007-07-18
  • 打赏
  • 举报
回复
运行出错:use-defined type not defined
显示的是这行Public Sub SubReceive(Addr As Byte, dataType As Byte, RcvUART As Byte, CheckOut As Boolean, MSC As MSComm)
whua6238 2007-07-17
  • 打赏
  • 举报
回复
不错
Xwitch 2007-07-16
  • 打赏
  • 举报
回复
用VB的MScom控件
波特率可以用软件计算
具体原理一般的教材都有叙述

下面给出VB部分程序
根据通讯协议不同有所不同,只做参考
波特率9600

//初始化
Private Sub Form_Load()
With MSC
.CommPort = 1
.Settings = "9600,N,8,1"
.InputLen = 6

.OutBufferSize = 6
.SThreshold = 0
.RThreshold = 0
.InputMode = comInputModeBinary
.PortOpen = True

End With
End Sub

//接收子程序
Public Sub SubReceive(Addr As Byte, dataType As Byte, RcvUART As Byte, CheckOut As Boolean, MSC As MSComm)
Dim instring() As Byte, temp As Variant
Dim Checksum As Long, bytChecksum As Byte, i As Integer

MSC.InBufferCount = 0
Do Until MSC.InBufferCount >= 6
DoEvents
Loop
temp = MSC.Input
instring = temp
Addr = instring(1)
dataType = instring(2)
RcvUART = instring(3)

Checksum = 0 '校验码等于收到的校验码,CheckOut为ture,否则为flase
For i = 0 To 3
Checksum = (Checksum + instring(i))
Next i
bytChecksum = Checksum Mod 256#
If bytChecksum <> instring(4) Then
CheckOut = False
Else
CheckOut = True
End If

End Sub

//发送子程序
Public Sub SubSend(Addr As String, dataType As String, UARTdata As String, MSC As MSComm)
Dim Sentdata(0 To 5) As Byte
Dim i As Integer
Dim Checksum As Long

Sentdata(0) = Val("&h42")
Sentdata(1) = Val("&h" & Addr)
Sentdata(2) = Val(dataType)
Sentdata(3) = Val("&h" & UARTdata)

Checksum = 0
For i = 0 To 4
Checksum = (Checksum + Sentdata(i))
Next i
Sentdata(4) = Checksum Mod 256#

Sentdata(5) = Val("&h24")

MSC.Output = Sentdata

End Sub
lbing7 2007-07-16
  • 打赏
  • 举报
回复
VB语言

看它专有的那个控件!!

这就OK了
wxf0204 2007-07-16
  • 打赏
  • 举报
回复
网上很多现成的代码,可以下载!

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧