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:
- Direct COM port support (like 'COM1')
- TAPI (Windows Telephony Device) support (like 'Standard 56000 bps Modem');
- Support for RS-232/RS422/RS485, up to 256 simultaneous ports;
- Support for all types of Hayes compatible modems;
- Support for serial cable as well as USB cable or Bluetooth connections;
- Support for Virtual COM ports (i.e. COM ports redirected through the network);
- Hardware flow control (RTS/CTS, DTR/DSR) and software flowcontrol (XON/XOFF) support;
- Configurable baudrate/parity/stopbits, full buffered data transfer, text/binary data transfer.
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':
(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:
(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:
(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.