Open Com
Opens a serial port for input and output
result = Open Com( options[,] As[#] filenum )
options
Returns zero (0) on success and a non-zero error code otherwise.
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:
n
Opens COM1 with 9600 baud, no parity, 7 data bits and 2 stop bits.
Opens COM1 with 115200 baud, "even" parity, 7 data bits and 1 stop bits.
Syntax
Usage
result = Open Com( options[,] As[#] filenum )
Parameters
options
A String containing options used in controlling the port.
filenumThe file number to bind to the port.
Return Value
Returns 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)
extended_optionsCondition | 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 |
Miscellaneous options. (See table below)
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.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) |
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:"
- 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
"COM1:" maps to "/dev/ttyS0"
"COM2:" maps to "/dev/ttyS1", etc
"/dev/xyz:" maps to "/dev/xyz", etc
- 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
Since fbc-0.18.4, an alternate IRQ can be specified using the the "IRn" protocol option where n is 3 through 7.
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:"
COM1 - &h3f8; - IRQ4
COM2 - &h2f8; - IRQ3
COM3 - &h3e8; - IRQ4
COM4 - &h2e8; - IRQ3
Since fbc-0.18.4, an alternate IRQ can be specified using the the "IRn" protocol option where n is 3 through 7.
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:"
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