Academic Company Events Community Support Solutions Products & Services Contact NI MyNI
58 ratings:
 3.43 out of 5   

How Do I Use Serial Communication in Visual Basic (Specifically v6.0)?

Hardware: Serial>>RS-232

I want to control a serial instrument using Visual Basic. How can I do this?

First, it is strongly suggested that anyone wanting to control a serial instrument consider using NI-VISA (available with Measurement Studio). If this is not an option, it is still possible to interface to a serial port in Visual Basic (the comments here are using Visual Basic 6.0). Serial communication in Visual Basic is done by using the MSComm component. Full documentation and examples with the MSComm component can be found in the Microsoft Developer Network. Here are some common issues which may occur when using Visual Basic for serial instrument control.

  • Q: How do I add an MSComm component to my program?
    A: In Visual Basic 6.0: right click the toolbox and select "Components". Check "Microsoft Comm Control 6.0" and click "OK". Place a MSComm control (it looks like a phone) on your form (it will be invisible at runtime). You can name the control if you like, the default name is MSComm1.

  • Q: What properties of the MSComm component should I use?
    A: The MSComm control is used by modifying and reading the object properties. Some of the useful ones are:

    CommPortThis property can be used to set or return the comm port being used.
    SettingsThis property contains a string which specifies the communications settings of the port. The string is in the form "baud,parity,data bits,stop bits". For example the string "9600,N,8,1" corresponds to 9600 baud, no parity, 8 data bits, and 1 stop bit.
    HandshakingThis property sets the handshaking mode for communication, a list of available constants should come up when it is used.
    InputLenThis property sets the number of characters that are read every time the input property is accessed. Setting this property to 0 will read tell MSComm to read all available data.
    PortOpenThis can be used to set or retrieve the status of the port. Use this property to open and close serial sessions.
    InputAccessing this property reads InputLen bytes from the buffer and then clears them from the buffer.
    OutputSetting this property sends a command to the serial port.
    InBufferCountThis property returns the number of bytes currently in the buffer.

  • Q: How do I send carriage returns and line feeds in Visual Basic?
    A: Visual Basic has a string constant called vbLf for line feed, a string constant called vbCr for carriage return, and a vbCrLf constant, which sends both. You can concatenate strings using the & operator.

  • Q: Why is the serial port sending data to my instrument, but not receiving responses?
    A: Make sure that you are sending the proper termination character (usually vbLf or vbCr) and that you have the proper handshaking mode enabled.

  • Q: Why am I receiving some data from the instrument, but not as much as I should be?
    A: You may need to give the instrument time to respond. If you know how many bytes you are expecting, you can use a while loop and the InBufferCount property to wait until the buffer has the expected amount of data. Alternately, you can use variables of the Date data type with the Now value and the DateDiff function to wait for a specified period of time.

  • Q: How do I parse responses in VB?
    A: The best way to parse responses is to read them one character at a time by setting InputLen = 1 and check for separators as you go. You can add each byte to a buffer if it is not a separator. If placed in a while loop this should eliminate any timing issues as well as parsing the data.

Related Links:
External Link: Microsoft Developer Network
Developer Zone Tutorial: Visual Basic 6.0 and .NET in Instrument Control


Report Date: 09/18/2003
Last Updated: 11/14/2012
Document ID: 31HBCB1P

Your Feedback! poor Poor  |  Excellent excellent   Yes No
 Document Quality? 
 Answered Your Question? 
  1 2 3 4 5
Please Contact NI for all product and support inquiries.submit