Help Center›FreeBASIC
Open Comfunction
Opens a serial port for input and output, using it as if it were file operations.
Syntax
Declare Function Open Com ( byref options As String, As filenumber As Long ) As Long
Parameters
| Name | Description | |
|---|---|---|
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 ]]]]]"nCom 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_optionsMiscellaneous options. (See table below)
All items except for the COM port are optional. The order of | 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) |
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.Remarks
Usage
result = Open Com( options[,] As[#] filenumber )
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", etcbaud 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
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.
baud rate must be between 50 and 115200
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
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.
Reference
- Documented in KeyPgOpenCom.html