Liberty BASIC Help Online

OPEN "COMn:..."
OPEN "COMn:baud,parity,data stop{,options}" for random as #handle
 
Description:
The OPEN "COMn:" statement opens a serial communications port for reading and writing.  This feature uses Microsoft Windows' own built-in communications API, so if you have a multiport communications card and a WIndows driver to support that card, you should be able to use any port on the card.
 
The simplest form for this command is:
 
    OPEN "COMn:baud,parity,data,stop" for random as #handle
 
Allowable choices for baud are:
 
    75 110 150 300 600 1200 2400 1800 2400 4800 9600 19200 38400 57600 115200
 
Allowable choices are parity are:
 
    NNo parity
    EEven parity
    OOdd parity
    SSpace parity
    MMark parity
 
Allowable choices for data are:
 
    5bits long
    6bits long
    7bits long
    8bits long
 
Allowable choices for stop are:
 
    1stop bit
    2stop bits
 
Additional optional parameters can be included after the baud, parity, data and stop information:
 
    CSnSet CTS timeout in milliseconds (default 1000 milliseconds)
    DSnSet DSR timeout in milliseconds (default 1000 milliseconds)
    PEEnable parity checking
    RSDisable detection of RTS (request to send)
 
Other defaults:
 
    DTR detection is disabled
    XON/XOFF is disabled
    binary mode is the default
 
To set the in and out communications buffers (each port has its own), set the variable Com (notice the uppercase C) to the desired size before opening the port.  Changing the variable after opening a port does not affect the size of the buffers for that port while it is open.
 
    'set the size of the communications buffers
    '(in and out) to 16K each
    Com = 16384
 
Usage Notes:
 
To open com port 2 at 9600 baud, 8 data bits, 1 stop bit, and no parity, use this line of code:
 
    open "com2:9600,n,8,1" for random as #commHandle
 
It is recommended that you set the the timeout on the DSR line to 0 so that your program doesn't just freeze when waiting for data to come in.  To do this, we can add a ds0 (for DSR 0 timeout) as below.  Notice we use a different communications speed in this example.
 
    open "com2:19200,n,8,1,ds0" for random as #commHandle
 
Remember that when a modem dials and connects to another modem, it negotiates a cpnnectopm speed.  In the case of 14400 speed modems, you need to specify 19200 as the connection speed and let the modems work it out between themselves during the connect.  This is because 14400 is not a baud rate supported by Windows (and you'll find that QBASIC doesn't directly support 14400 baud either).
 
Once the port is open, sending data is accomplished by printing to the port (ATZ resets modems that understand the Hayes command set):
 
    print #commHandle, "ATZ"
 
To read from the port you should first check to see if there is anything to read.  This is accomplished in this fashion:
 
    numBytes = lof(#commHandle)
 
Then read the data using the input$() function.
 
    dataRead$ = input$(#commHandle, numBytes)
 
Putting the lof( ) and input$( ) functions together on one line, it looks like this:
 
    dataRead$ = input$(#commHandle, lof(#commHandle))
 
When you're all done, close the port:
 
    close #commHandle
 
 
Liberty BASIC 3 has added the ability to disable DSR checking by specifying a zero or non value using the DS switch:&n