Opens a serial port for input and output
Syntax
Usage
result = Open Com( options[,] As[#] filenum )
Parameters
options
A
String containing options used in controlling the port.
filenum
The 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)
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.
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
- 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:"
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