Contact Info

Crumbtrail

ActiveXperts.com » Serial Port Component » How to Use Serial Port Component » Visual Basic 6

Using ActiveXperts Serial Port Component with Visual Basic 6.x

ActiveXperts Serial Port Component is a software development kit (SDK) that enables the user to communicate to a device over a serial interface.

Such a device can be: a weight indicator, a modem, a scanner, or any other device that is equiped with a serial port. It can even be another PC, connected via a NULL modem cable.

ActiveXperts Serial Port Component features the following:

Step 1: Download and install the ActiveXperts Serial Port Component

Download the ActiveXperts Serial Port Component from the ActiveXperts Download Site and start the installation. The installation guides you through the installation process.

Step 2: Create a new Visual Basic project

Launch 'Microsoft Visual Basic' from the Start menu, and choose 'New' from the 'File Menu'. The 'New Project' dialog appears.

Select 'Standard Exe' and click 'OK':

Visual Basic

(Click on the picture to enlarge)

Step 3: Refer to the ActiveXperts Serial Port Component Library and create the objects

A new Project is created, with a blank form.

First, you must add a reference to Serial Port Component in the project to be able to use the object. To do so, choose 'References...' from the 'Project' menu. In the 'References' dialog that pops up, enable the 'Serial Port Component 2.2 Type Library' reference as shown in the following picture:

Visual Basic

(Click on the picture to enlarge)

Click 'OK' to close the 'References...' dialog.

Then, select the Project form and choose 'View Code' from the context menu:

Visual Basic

(Click on the picture to enlarge)

On top of your code, declare the following object:

Public objComport As AxSerial.ComPort

Step 4: Create the object

From the Code window, select 'Form'. The Private Sub 'Form_Load()' will be displayed now.

In the 'Form Load' function, create the object in the following way:

Set objComport = CreateObject("AxSerial.ComPort")

Step 5: Send an AT command to a connected Hayes compatible modem

You can now send and/or receive data to and/or from a serial device.

The following code shows how to query a modem:

' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
' DO NOT FORGET: ADD A REFERENCE TO THE SERIAL PORT COMPONENT LIBRARY FROM THE PROJECT->REFERENCE 
' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Public lTimerID As Long
Public objComport As AxSerial.ComPort

Private Sub buttonSubmit_Click()
    textReceived = ""
    objComport.WriteString (textSend)
    
    GetResult
End Sub

Private Sub buttonView_Click()
    If FileExists(textLogfile.Text) = True Then
    Shell "notepad " + textLogfile.Text, vbNormalFocus
    End If
End Sub

Private Sub CheckDTR_Click()
   
    objComport.RaiseDTR (CheckDTR.Value)
    GetResult

End Sub

Private Sub CheckRTS_Click()
    
    objComport.RaiseRTS (CheckRTS.Value)
    GetResult
       
End Sub

Public Function FileExists(sFileName As String) As Boolean
  FileExists = CBool(Len(Dir$(sFileName))) And CBool(Len(sFileName))
End Function

Private Sub Form_Load()
    textSend = "AT"
    
    Set objComport = CreateObject("AxSerial.ComPort")
    
    objComport.ComTimeout = 100
        
    For i = 0 To objComport.GetDeviceCount() - 1
        comboDevice.AddItem (objComport.GetDevice(i))
    Next
        
    comboDevice.AddItem "COM1"
    comboDevice.AddItem "COM2"
    comboDevice.AddItem "COM3"
    comboDevice.AddItem "COM4"
    comboDevice.AddItem "COM5"
    comboDevice.AddItem "COM6"
    comboDevice.AddItem "COM7"
    comboDevice.AddItem "COM8"
    
    comboDevice.ListIndex = 0
    
    comboSpeed.AddItem "Default"
    comboSpeed.AddItem "110"
    comboSpeed.AddItem "300"
    comboSpeed.AddItem "600"
    comboSpeed.AddItem "1200"
    comboSpeed.AddItem "2400"
    comboSpeed.AddItem "4800"
    comboSpeed.AddItem "9600"
    comboSpeed.AddItem "14400"
    comboSpeed.AddItem "19200"
    comboSpeed.AddItem "38400"
    comboSpeed.AddItem "57600"
    comboSpeed.AddItem "64000"
    comboSpeed.AddItem "115200"
    comboSpeed.AddItem "128000"
    comboSpeed.AddItem "256000"
    
    comboSpeed.ListIndex = 0
    
    comboHWFlowControl.AddItem "Default"
    comboHWFlowControl.AddItem "Disable"
    comboHWFlowControl.AddItem "Enable"
    
    comboHWFlowControl.ListIndex = 0
    
    comboSWFlowControl.AddItem "Default"
    comboSWFlowControl.AddItem "Disable"
    comboSWFlowControl.AddItem "Enable"
    
    comboSWFlowControl.ListIndex = 0
        
    comboDataFormat.AddItem "Default"
    comboDataFormat.AddItem "8,n,1"
    comboDataFormat.AddItem "7,e,1"
    
    comboDataFormat.ListIndex = 0
    
    textReceived = ""
    
    EnableControls
    
End Sub

Private Sub buttonOPEN_Click()
    
    objComport.Device = comboDevice.List(comboDevice.ListIndex)
    
    If (comboSpeed.Text = "Default") Then
        objComport.BaudRate = 0
    Else
        objComport.BaudRate = comboSpeed.Text
    End If
    
    objComport.LogFile = textLogfile.Text
        
    objComport.HardwareFlowControl = comboHWFlowControl.ListIndex
    objComport.SoftwareFlowControl = comboSWFlowControl.ListIndex
    
    If (comboDataFormat.ListIndex = 0) Then
        objComport.DataBits = objComport.asDATABITS_DEFAULT
        objComport.StopBits = objComport.asSTOPBITS_DEFAULT
        objComport.Parity = objComport.asPARITY_DEFAULT
    End If
        
    
    If (comboDataFormat.ListIndex = 1) Then
        objComport.DataBits = objComport.asDATABITS_8
        objComport.StopBits = objComport.asSTOPBITS_1
        objComport.Parity = objComport.asPARITY_NONE
    End If
        
    
    If (comboDataFormat.ListIndex = 2) Then
        objComport.DataBits = objComport.asDATABITS_7
        objComport.StopBits = objComport.asSTOPBITS_1
        objComport.Parity = objComport.asPARITY_EVEN
    End If
        
    objComport.Open
    
    GetResult
     
    EnableControls
    
End Sub

Private Sub buttonClose_Click()
    objComport.Close

    GetResult
    
    EnableControls
End Sub


Private Sub Form_Unload(Cancel As Integer)
    Timer1.Enabled = False
End Sub

Private Sub EnableControls()
    
    Dim bOpened

    bOpened = objComport.IsOpened
   
    CheckDTR.Enabled = bOpened
    CheckRTS.Enabled = bOpened
    checkCTS.Enabled = bOpened
    checkDCD.Enabled = bOpened
    checkRI.Enabled = bOpened
    checkDSR.Enabled = bOpened
    buttonOpen.Enabled = bOpened + 1
    buttonClose.Enabled = bOpened
    buttonSubmit.Enabled = bOpened
    
    Timer1.Enabled = bOpened
    
End Sub

Private Sub linkErrorCodes_Click()
    Shell "Explorer https://www.activexperts.com/support/errorcodes/"
End Sub

Private Sub linkWebsite_Click()
    Shell "Explorer https://www.activexperts.com"
End Sub

Private Sub Timer1_Timer()
    Dim strString
    
    strString = objComport.ReadString
    
    If (strString <> "") Then
        textReceived = textReceived & strString & vbCrLf
    End If
    
    checkDCD.Value = Abs(objComport.QueryDCD)
    checkCTS.Value = Abs(objComport.QueryCTS)
    checkDSR.Value = Abs(objComport.QueryDSR)
    checkRI.Value = Abs(objComport.QueryRI)
        
End Sub

Private Sub GetResult()
    If objComport.LastError = 0 Then
        textResult.Caption = "SUCCESS"
    Else
        textResult.Caption = "ERROR " & objComport.LastError & " ( " & _
          objComport.GetErrorDescription(objComport.LastError) & " )"
    End If
End Sub

You can download the full samples here.