正文

单片机与PC机串行通讯之VB篇(1) 2005-09-30 13:20:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5471.html

分享到:

单片机与PC机串行通讯之VB篇(1)Ryan 发表于 2005-6-7 14:35:32 网上有很多关于PC机与单片机串行通讯的文章和程序,但有些不太适合初学者。我最近把网上搜集的程序消化并修改了一下,并在试验板上进行了一些简单的调试。希望对大家有用。   PC机上的程序是用VB编的,VB可以说是最容易上手的语言了,也很容易读懂。下面是VB的源程序: Private Sub Form_Load()     MSComm1.CommPort = 1 '使用串行口1     MSComm1.Settings = "4800,N,8,1" '波特率4800,无校验,8个数据位,1个停止位。     MSComm1.InputLen = 1 '当使用MSComm1.Input时,每次从接收缓冲区取一个字节。     TestTimer.Interval = 20 '定时器的中断间隔为20ms,用于更新显示时间。    End Sub Private Sub Command1_Click()     Dim echoch% '命令变量        Dim ch$     On Error Resume Next '简单的错误处理     Label1.Caption = MSComm1.Settings '显示串行口的设置。        TestTimer.Enabled = True     If Command1.Caption = "通信" Then '若当前命令按扭的提示为“通信”则开始发送和         Command1.Caption = "停止" '接受数据,并将命令按扭提示改为“停止”,以         CmdExit.Enabled = False '允许停止通信。使退出命令在通信中失效。                Echo.Enabled = False         If Not MSComm1.PortOpen Then '若串行口没有打开,则打开串行口             MSComm1.PortOpen = True         End If         If MSComm1.PortOpen Then '若串口已经打开,则发送连接或控制命令给单片机             If Echo.Text <> "" Then '若命令输入框不空,则将其转换为ASCII码值                 echoch% = Asc(Echo.Text)                            Else                 echoch% = &H41 '否则确省命令为41H,ASCII的"A"             End If             MSComm1.Output = echoch% '向串行口写入一字节命令,由WINDOWS自动将命令发出             LabelSend.Caption = Chr(echoch%) & " ASCII " & Hex(echoch%) '显示刚发出的命令                End If         Do While MSComm1.PortOpen             If MSComm1.InBufferCount > 0 Then '若mscomm1.InBufferCount>0表示接受缓冲区有数据,并读出一个字符                 ch$ = MSComm1.Input                 LabelReceive.Caption = Asc(ch$)                                 Select Case ch$                                    Case Asc("Y") '若收到字母“Y”,则退出当前循环进入下一循环                                            MsgBox "连接成功,您可以给单片机发送命令了!"                                        Case Asc("A")                                                MsgBox "你发送的一号命令已经被单片机收到!"                                                        Case Asc("B")                                                MsgBox "你发送的二号命令已经被单片机收到!"                                            Case Asc("C")                                            MsgBox "你发送的N号命令已经被单片机收到!"                                            Case Else                                            MsgBox "你发送了非法命令,单片机已经晕了!"                                        End Select             Else                                                    If MsgBox("连接失败,请检查连接是否正确!", vbRetryCancel) = 4 Then                        dummy = DoEvents()                               MSComm1.Output = echoch% '否则继续向下位机发命令,通知下位机送数据                                    Else                                     Exit Do                                End If             End If             dummy = DoEvents() '让系统处理其他消息         Loop        '下位机接受到正确的命令,并回发命令正确时,进入下面循环     Else '在通讯过程中,按下cmdCOMM按钮则停止通信,发出停止测试         Command1.Caption = "通信" '命令,关闭串行口,使退出按钮有效。         MSComm1.Output = Chr(&H5F)         MSComm1.PortOpen = False         CmdExit.Enabled = True                Echo.Enabled = True                TestTimer.Enabled = False     End If End Sub Sub CmdExit_Click()     If MSComm1.PortOpen Then '确认关闭串行口         MSComm1.PortOpen = False     End If     End '终止整个程序 End Sub Private Sub Command2_Click()     TestTimer.Enabled = True End Sub Private Sub TestTimer_Timer() '更新显示时间     LabTime.Caption = Time$ End Sub 如果大家感觉程序哪里有问题,请大家一起探讨。

阅读(4542) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册