Using Visual Basic Express 2008 with the FTDI virtual COM port
Microsoft Visual Basic Express 2008 offers an easy to use method to design PC based applications, it provides a multitude of buttons, timers, textboxes etc which are all available to be easily integrated into the target program. The aim of this tutorial was to show the absolute basics of what is required to talk to the COM port, from setting the port up to declaring an array buffer and then on to finally communicating with the target. More advanced error handling is not including for the purpose of keeping simplicity.
The Visual Express 2008 compilers from microsoft are available free of charge here http://www.microsoft.com/express/download/
Firstly comes the COM port handle definition, and a byte declared for indicating that the COM port has been successfully opened later in the code.
Dim USB_RS485 As System.IO.Ports.SerialPort
Dim port_open As Byte = 0
Next comes a subroutine that is executed only when the program starts, it adds text strings of all the available COM ports into a combo box named "Ports" and finishes by printing "Select COM" in the combo box. This will only be seen at the start and whatever port was selected from the drop down list in the combo box will replace it thereafter.
Form1_Load(ByVal sender As
System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
For Each sp As String In My.Computer.Ports.SerialPortNames
Ports.Text = "Select COM"
Opening a selected COM port from the combo box is the objective of the Ports_SelectedIndexChanged() function. It firstly looks to see if there is a COM port in use that was setup by itself by checking the variable port_open, if that is the case it will close the port before moving on. An attempt will then be made using a try, catch function to open the selected port specified in the combo box, a failed attempt will print "ERROR OPENING PORT" to a textbox and return. A success will print the message "COMx OPEN" and change port_open to indicate accordingly.Private Sub Ports_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ports.SelectedIndexChanged
When the Go button is clicked this subroutine sends data to the serial port and waits for some in return. It starts by checking the port_open variable to see whether a COM port is open. Next it loads a byte array buffer with data, before using the Write() function to send the data to the COM port specified by the USB_RS485 handle. The function now looks for four bytes in return and waits until the COM port has these ready, once this condition is met the Read() function is used to move the data into the byte array buffer.Private Sub Go_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Go.Click
SerBuf(0) = 0
SerBuf(1) = 1
SerBuf(2) = 2
SerBuf(3) = 3
SerBuf(4) = 4
SerBuf(5) = 5
USB_RS485.Write(SerBuf, 0, 6) 'Write(buffer, start, length)
Do While USB_RS485.BytesToRead < 4 'wait for four bytes to be recieved
USB_RS485.Read(SerBuf, 0, 4) 'Read(buffer, start, length)