VBA 语言 与串口设备进行通信

VBAamuwap 发布于 2 天前 2 次阅读


阿木博主一句话概括:VBA【1】与串口设备通信技术详解

阿木博主为你简单介绍:
随着计算机技术的不断发展,串口通信【2】技术在工业控制、数据采集等领域扮演着重要角色。VBA(Visual Basic for Applications)作为一种易于学习和使用的编程语言,被广泛应用于各种应用程序中。本文将围绕VBA与串口设备通信这一主题,详细讲解如何使用VBA编写代码与串口设备进行通信,包括串口配置、数据发送与接收、错误处理等方面。

一、

VBA是一种基于Visual Basic的编程语言,广泛应用于Microsoft Office系列软件中。它具有易学易用、功能强大等特点,可以方便地实现各种自动化任务。串口通信是指通过串行接口进行数据传输的一种通信方式,广泛应用于嵌入式系统、工业控制等领域。本文将介绍如何使用VBA与串口设备进行通信,包括串口配置、数据发送与接收、错误处理等。

二、VBA与串口通信基础

1. 串口通信原理

串口通信是指通过串行接口进行数据传输的一种通信方式。串行通信的特点是数据一位一位地依次传输,因此传输速率相对较慢,但可以实现远距离通信。串口通信通常使用RS-232【3】标准,该标准定义了串口通信的电气特性、功能特性、机械特性等。

2. VBA与串口通信接口

VBA提供了MSComm控件【4】,用于实现与串口设备的通信。MSComm控件是一个虚拟的串行通信端口,可以模拟真实的串行端口,实现数据的发送与接收。

三、VBA与串口通信实现

1. 串口配置

在VBA中,首先需要配置MSComm控件,包括设置串口名称、波特率【5】、数据位【6】、停止位【7】、校验位【8】等参数。

vb
Private Sub Form_Load()
With MSComm1
.Port = "COM1" ' 设置串口名称
.BaudRate = 9600 ' 设置波特率
.DataBits = 8 ' 设置数据位
.StopBits = vbCRCLSB ' 设置停止位
.Parity = vbNOPARITY ' 设置校验位
.InBufferSize = 1024 ' 设置输入缓冲区大小
.OutBufferSize = 1024 ' 设置输出缓冲区大小
.RTS = True ' 设置RTS信号
.DTR = True ' 设置DTR信号
.OnComm = AddressOf MSComm1_ComEvent ' 设置通信事件处理程序
End With
End Sub

2. 数据发送

使用MSComm控件的`Output`属性可以发送数据到串口设备。

vb
Private Sub btnSend_Click()
With MSComm1
.Output = "Hello, Serial Port!" ' 发送数据
End With
End Sub

3. 数据接收

使用MSComm控件的`Input`属性可以接收串口设备发送的数据。

```vb
Private Sub MSComm1_ComEvent(ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal ByVal