打开输入和输出的串行端口
语法
用法
result = Open Com( options , As[#] filenum )
参数
options
filenum
要绑定到端口的文件编号。
返回值
成功返回零(0),否则返回非零错误代码。
说明
该命令打开PC的串行端口,允许使用正常的文件命令
Print #,
Input #,
Get #,...发送和接收数据
主要参数是一个
String,至少描述了要打开的通信端口。它有格式:
"Comn : [ baudrate ][ , [ parity ][ , [ data_bits ][ , [ stop_bits ][ , [ extended_options ]]]]]"
其中,
n
Com端口打开。"1","2","3","4"等某些平台将支持更多的串行端口,这取决于操作系统的配置方式。n 未提供"COM:","COM:"将映射到"COM1:",除非在"COM:"映射到"/dev/modem"
baudrate
"300"(默认),"1200",...等
parity
"N"(无),"E"(偶数,默认),"O"(奇数),"S"(空格),"M"(标记),"PE"(QB-quirk:
data_bits
"5","6","7"(默认)或"8".
stop_bits
"1",
"1.5" or
"2".
(default value depends on baud rate and data bits, see table below)
条件 | 默认停止位数 |
波特率<= 110,数据位= 5 | 1.5 |
波特率<= 110,数据位>= 6 | 2 |
波特率>110 | 1 |
extended_options 杂项选项。
(See table below)
选项 | 行动 |
'CSn' | 设置CTS持续时间(以ms为单位)(n >= 0),0 =关闭,默认= 1000 |
'DSn' | 设置DSR持续时间(以ms为单位)(n >= 0),0 =关闭,默认= 1000 |
'CDn' | 设置载波检测持续时间(以ms为单位)(n >= 0),0 =关闭 |
'OPn' | 设置“打开超时”(以ms为单位)(n >= 0),0 =关闭 |
'TBn' | 设置“发送缓冲区”大小(n >= 0),0 =默认值取决于平台 |
'RBn' | 设置“接收缓冲区”大小(n >= 0),0 =默认,取决于平台 |
'RS' | 抑制RTS检测 |
'LF' | 以ASCII模式进行通信(将LF添加到每个CR) - Win32不支持此函数 |
'ASC' | 与“LF”相同 |
'BIN' | LF的相反,它将永远奏效 |
'PE' | 启用“奇偶校验”检查 |
'DT' | 关闭后保持DTR有效 |
'FE' | 错误地丢弃无效字符 |
'ME' | 忽略所有错误 |
'IRn' | COM的IRQ号(仅在DOS上支持(?)) |
除COM端口外的所有项目都是可选的。 波特率,奇偶校验,data_bits,stop_bits的顺序是固定的。 任何跳过的固定项(波特率等)都必须为空。
例子
Open Com "COM1:9600,N,,2" As 1
打开COM1 9600波特,无奇偶校验,7个数据位和2个停止位。
Open Com "COM1:115200" As 1
使用115200波特,“偶数”奇偶校验,7个数据位和1个停止位打开COM1。
平台差异
- 在Windows平台“COM:”映射到“COM1:”
- 在Linux平台上
“COM:”映射到“/ dev / modem”
“COM1:”映射到“/ dev / ttyS0”
“COM2:”映射到“/ dev / ttyS1”等
“/ dev / xyz:”映射到“/ dev / xyz”等
- DOS串行驱动程序是实验性的,可以访问COM端口1到4
它使用以下基础io和IRQ作为默认值:
COM1 - &H3F8 - IRQ4
COM2 - &h2f8 - IRQ3
COM3 - &h3e8 - IRQ4
COM4 - &h2e8 - IRQ3
由于fbc-0.18.4,可以使用“IR n ”协议选项指定备用IRQ,其中n 为3 至7 .
目前不支持:IRQ在从站PIC,备用的基本I / O地址,超时和大多数错误,如QB中检测到的,硬件流控制,FIFO。
“COM:”映射到“COM1:”
方言差异
与QB差别
- 在QB中,语法为OPEN“COMx:[baudrate][,parity, [data_bits, [stop_bits, [extended_options]]]]”FOR INPUT | OUTPUT | RANDOM AS [#]n
- 在QB中,仅支持“COM1:”和“COM2:”.在FreeBASIC中,可以使用任何正确配置的串行端口。
参考