在单片机串口通信开发中,使用上位机的人机交互界面丰富了用户体验,也能相应的扩展功能,弥补单片机单一的任务处理能力。使用单片机串口通信,接口简单,易于上位机编程的实现。如果在VisualBasic编写串口通信程序中,实现自动调入计算机存在的串口的功能,能大大方便了用户轻松的连接到想要的串口,这将是一个更好的用户体验。目的是使得用户不用大费周章去寻找串口号。实现这一功能并不难实现,下面阿浩介绍这一种方法。
VB与串口VisualBasic可以打开16个串口,但是通常计算机只配置一个或者两个串口,或者根本就没有串口,这时就需要我们使用串口转USB来支持。而且有时计算机的串口还可能被其他程序使用,因此,为了增强软件使用的鲁棒性,必须增加一段代码,用语庞端本计算机可以利用的有效串口数,如果串口在使用,也应加入可使用的行列来,只是在使用过程中要考虑其是否已经被其他程序打开,为了用户提示相应的信息。
关于VB编写串口通信程序详见 《PC机与单片机串行通信的实现》、《VB平台下串口通信的实现》
程序调入串口的方法调入计算机可用的串口,简单的方法是尝试去打开那个串口。简单来说,我们只需要对16个串口号进行逐个扫描。扫描的方法是:尝试打开该串口,串口可以打开,则加入列表中去,供用户连接;否则计算机不存在那个串口或者被其他程序占用时,VB将产生一个错误。
调入串口时错误的处理在调入串口的过程中,会产生一些错误。这时我们必须捕获错误并解决掉,否则程序无法往下执行。如果串口存在并被其他程序占用,如已处于打开状态,也会发生错误。我们需要编写一段错误处理函数,当发生错误的时候,进入错误处理函数。
程序代码:
'--------------------------------------------------------------------------' 调入计算机存在的串口'版本:V1.0.2'程序设计:JH单片机'--------------------------------------------------------------------------Private Sub CommLoad() On Error GoTo ErrLine '如果错误,进入错误处理程序 Dim I As Integer '定义可访问的串口数 Dim Counter As Integer '用于记录经检查可以使用的串口号 Counter = 0 '计数器清零 For I = 1 To 16 '循检可能存在的16个串口 MSComm.CommPort = I '将每个串口依次打开 MSComm.PortOpen = True '打开串口 If MSComm.PortOpen = True Then '如果打开成功,说明该串口可用 MSComm.PortOpen = False '检查完毕,关闭串口 CboSerialPort.AddItem "COM" + CStr(I), Counter '将可用串口增加到组合框内 Counter = Counter + 1 '记数器加1 End If Next I CboSerialPort.ListIndex = 0 '将第一个可用串口设为默认值 Exit Sub '跳出程序ErrLine: If Err.Number = 8005 Then '如果在处理过程中有串口被其它程序打开,则应将其加入组合框内 CboSerialPort.AddItem "COM" + CStr(I), Count '将可用串口增加到组合框内 Counter = Counter + 1 '计数器加1 End If Resume Next '回到出错入口处,继续执行循检串口程序!End Sub代码简述上述代码利用Err函数进行串口检查,首先对可能存在的16个串口进行扫描,逐个打开,如果串口能打开,说明其存在并且是空闲的,然后关闭该串口,将其加入端口号组合框内,并且计数器Counter加1,进行下一个端口扫描。反之端口不能打开,则会出现错误,转入错误处理函数进行处理。
|