Open Com

Opens a serial port for input and output

Syntax
   Declare Function Open Com ( byref options As String, As filenumber As 
   Long ) As Long

Usage
   result = Open Com( options[,] As[#] filenumber )

Parameters
   options
      A String containing options used in controlling the port.
   filenumber
      The file number to bind to the port.

Return Value
   Open Com() returns a 32 bit Long: a zero (0) on success and a non-zero 
   error code otherwise.

Description
   This command opens a serial port of the PC, allowing to send and receive 
   data by using the normal file commands as Print  #, Input #, Get #, ...

   The main parameter is a String that describes, at the very least, which 
   communications port to open. It has the format:

      "Comn: [ baudrate ][ , [ parity ][ , [ data_bits ][ , [ stop_bits ][ 
      , [ extended_options ]]]]]"

   where,
   n
      Com port to open. "1", "2", "3", "4", etc.  Some platforms will 
      support more serial ports depending on how the operating system is 
      configured.  Where n is not given, "COM:" will map to "COM1:", except 
      on Linux where "COM:" maps to "/dev/modem"
   baudrate
      "300" (default), "1200", ..., etc.
   parity
      "N" (none), "E" (even, default), "O" (odd), "S" (space), "M" (mark), 
      "PE" (QB-quirk: checked, even parity)
   data_bits
      "5", "6", "7" (default) or "8".
   stop_bits
      "1", "1.5" or "2". (default value depends on baud rate and data bits, 
      see table below)

            +-----------------------------------+---------------------------+
            |Condition                          |Default number of stop bits|
            |baud rate <= 110 and data bits = 5 |1.5                        |
            |baud rate <= 110 and data bits >= 6|2                          |
            |baud rate > 110                    |1                          |
            +-----------------------------------+---------------------------+

   extended_options
      Miscellaneous options. (See table below)

            +------+-------------------------------------------------------------------------------+
            |Option|Action                                                                         |
            |'CSn' |Set the CTS duration (in ms) (n>=0), 0 = turn off, default = 1000              |
            |'DSn' |Set the DSR duration (in ms) (n>=0), 0 = turn off, default = 1000              |
            |'CDn' |Set the Carrier Detect duration (in ms) (n>=0), 0 = turn off                   |
            |'OPn' |Set the 'Open Timeout' (in ms) (n>=0), 0 = turn off                            |
            |'TBn' |Set the 'Transmit Buffer' size (n>=0), 0 = default, depends on platform        |
            |'RBn' |Set the 'Receive Buffer' size (n>=0), 0 = default, depends on platform         |
            |'RS'  |Suppress RTS detection                                                         |
            |'LF'  |Communicate in ASCII mode (add LF to every CR) - Win32 doesn't support this one|
            |'ASC' |same as 'LF'                                                                   |
            |'BIN' |The opposite of LF and it'll always work                                       |
            |'PE'  |Enable 'Parity' check                                                          |
            |'DT'  |Keep DTR enabled after CLOSE                                                   |
            |'FE'  |Discard invalid character on error                                             |
            |'ME'  |Ignore all errors                                                              |
            |'IRn' |IRQ number for COM (only supported (?) on DOS)                                 |
            +------+-------------------------------------------------------------------------------+

   All items except for the COM port are optional. The order of baudrate, 
   parity, data_bits, stop_bits is fixed. Any skipped fixed item ( baudrate
   , etc...) must be empty.

   The error code returned by Open Com can be checked using Err in the next 
   line. The function version of  Open Com returns directly the error code 
   as a 32 bit Long.

Example
   Open Com "COM1:9600,N,,2" As 1

   Opens COM1 with 9600 baud, no parity, 7 data bits and 2 stop bits.

   Open Com "COM1:115200" As 1

   Opens COM1 with 115200 baud, "even" parity, 7 data bits and 1 stop bits. 
   

Platform Differences
   * On the Windows platform 
      "COM:" maps to "COM1:"
      baud rate must be an unsigned 32-bit integer, and is passed on 
      directly to the operating system.
   * On the Linux platform
      "COM:" maps to "/dev/modem"
      "COM1:" maps to "/dev/ttyS0"
      "COM2:" maps to "/dev/ttyS1", etc 
      "/dev/xyz:" maps to "/dev/xyz", etc
      baud rate must be one of 50, 150, 300, 600, 1200, 1800, 2400, 4800, 
      9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 
      921600, 1000000, 1152000
      in fbc >= 1.09.0, baud rate can also be one of 1500000, 2000000, 
      2500000, 3000000, 3500000, 4000000
      the baud rates supported depend on the system where the fbc compiler 
      itself was compiled and built
   * The DOS serial driver is experimental and can access COM ports 1 to 4 
     
      It uses the following base io and IRQ's as default: 
      COM1 - &h3f8 - IRQ4 
      COM2 - &h2f8 - IRQ3 
      COM3 - &h3e8 - IRQ4 
      COM4 - &h2e8 - IRQ3 
      An alternate IRQ can be specified using the the "IRn" protocol option 
      where n is 3 through 7 (first PIC). Since fbc 1.10.0, n can also be 8 
      through 15 (second PIC).
      Currently not supported: IRQ's on the slave PIC, alternate base I/O 
      addresses, Timeouts and most errors as detected in QB, hardware flow 
      control, FIFO's.
      "COM:" maps to "COM1:"
      baud rate must be between 50 and 115200
Dialect Differences
   * In the -lang qb dialect the old syntax OPEN "COMx:... is supported. 

Differences from QB
   * In QB the syntax was OPEN  "COMx:[baudrate] [,parity, [data_bits, 
     [stop_bits, [extended_options]]]]"  FOR INPUT|OUTPUT|RANDOM AS [#] n
   * In QB, only "COM1:" and "COM2:" are supported.  In FreeBASIC, any 
     correctly configured serial port may be used.

See also
   * Open

