2.5 通信指令

(1)指令格式

Open——通信口=ON。

Close——通信口=OFF。

Print#——以ASCII码输出数据,结束码CODE为CR。

Input#——接收ASCII码数据文件,结束码CODE为CR。

On Com GoSub——根据外部通信口输入数据,调用子程序。

Com On——允许根据外部通信口输入数据进行“插入处理”。

Com Off——不允许根据外部通信口输入数据进行“插入处理”。

Com Stop——停止根据外部通信口输入数据进行“插入处理”。

(2)指令例句

    Open"COM1□"As# 1'——开启通信口COM1并将从通信口COM1传入的文件作为1
    Close# 1'——关闭1号文件
    Close'——关闭全部文件
    Print# 1□"TEST"'——输出字符串"TEST"到1
    Print# 2□"M1= "□M1'——输出字符串"M1= "到2
    PRINT# 3,P1'——输出P1点数据到3号文件。例:如果P1点数据为X= 123.7,Y= 238.9,Z=33.1,A= 19.3,B= 0,C= 0,FL1= 1,FL2= 0,则输出数据为"(123.7,238.9,33.1,19.3,0,0)(1,0)"+ CR
    Print# 1,M5,P5'——输出变量M5和P5点数据到1
    则输出数据为:"8,(123.7,238.9,33.1,19.3,0,0)(1,0)"+ CR
    Input# 1,M3'——输入接收指令。指定输入的数据= M3。例:如果输入数据= "8"+ CR,则M3= 8
    Input# 1,P10'——输入接收指令。指定输入的位置数据= P10。例:如果输入数据为"(123.7,238.9,33.1,19.3,0,0)(1,0)"+ CR,则P10为(X= 123.7,Y= 238.9,Z= 33.1,A= 19.3,B= 0,C= 0,FL1= 1,FL2= 0)
    Input# 1,M8,P6'——输入接收指令。指定输入的数据代入M8和位置点P6。例:如果输入数据为"7,(123.7,238.9,33.1,19.3,0,0)(1,0)"+ CR
    则M8= 7,P6为(X= 123.7,Y= 238.9,Z= 33.1,A= 19.3,B= 0,C= 0,FL1= 1,FL2= 0)
    On Com(2)GoSub * RECV'——根据从外部通信口COM2输入指令调用子程序* RECV
    Com(1)On'——允许通信口COM1工作
    Com(2)Off'——关闭COM2通信口
    Com(1)Stop'——停止COM1通信口的工作(保留其状态)

以下各节对通信指令进行详细解释。

2.5.1 Open——通信启动指令

(1)指令格式

Open,“<通信口名或文件名>”[For<模式>]As[#]<文件号码>。

(2)术语说明

①<通信口名或文件名> 指定通信口或“文件名称”。

②<模式> 有Input/Output/Append模式(省略即为随机模式)。

③<文件号码> 设置文件号(1~8)。

(3)程序样例(指定通信口)

    1 Open"COM1:"As# 1'——开启通信口COM1。从通信口COM1传入的文件作为1
    2 Mov P_01
    3 Print# 1,P_Curr'——将"P_C Curr(当前位置)输出,假设以"(100.00,200.00,300,00,400.00)(7,0)"格式输出
    4 Input# 1,M1,M2,M3'——以ASCII码格式接收从通信口CM1传入的101.00,202.00,303.00"外部数据
    5 P_01.X= M1'——对P_01.点的X赋值
    6 P_01.Y= M2'——对P_01.点的Y赋值
    7 P_01.C= Rad(M3)'——对P_01.点的C赋值
    8 Close'——关闭通信口
    9 End

(4)程序样例(指定通信口)

    1 Open"temp.txt"For Append As# 1'——打开文件名为temp.txt的文件,Append模式,指定temp.txt为1#文件
    2 Print# 1,"abc"'——输出字符串"abc"到1
    3Close# 1'——关闭1

通信口的通信方式可以用参数设置,参见图2-13。

图2-13 用参数设置通信口的通信方式

本参数设置了通信口COM1~COM8的通信方式。例如:COM1通信口的通信方式为RS232。

2.5.2 Print——输出字符串指令

(1)指令格式

Print □ #<文件号> □[<式1>]…[<式2>]

①<文件号> 即Open指令指定的“文件号”。

②<式> 数值表达式、位置表达式、字符串表达式。

(2)指令例句

输出信息到文件“temp.txt”。

    1 Open"temp.txt"For APPEND As# 1'——将文件"temp.txt"视作1
    2 MDATA= 150'
    3 Print# 1,"* * * Print TEST* * * "'——输出字符串"* * * Print TEST* * * "
    4 Print# 1'——输出换行符
    5 Print# 1,"MDATA= ",MDATA'——输出字符串"MDATA= ",随后输出MDATA的值(150)
    6 Print# 1'——输出换行符
    7 Print# 1,"* * * * * * * * * * * * * * * * "'——输出字符串"* * * * * * * * * * * ** * * * * * * * * * * * * * * "
    8 End
    '——□□□□□
    输出结果
    * * * Print TEST* * *
    MDATA= 150
    * * * * * * * * * * * * * * * *

注意

当指令中没有表达式时,输出换行符。

2.5.3 Input——从指定的文件中接收数据,接收的数值为ASCII码

(1)指令格式

Input □ #<文件号> □[<输入数据名>]…[<输入数据名>]

<输入数据名>——输入的数据被存放的位置。以变量表示。

(2)样例

    1 Open"temp.txt"For Input As# 1'——将"temp.txt"文件视作# 1文件打开
    2 Input# 1,CABC$ '——接收1#文件传送过来的数据(从开始到换行符为止),CABC$ = "接收到的数据"
    10 Close# 1

2.5.4 On Com GoSub指令

(1)功能

如果从通信端口有插入指令输入,就跳转到指定的子程序。

(2)指令格式

On □ Com[(<文件号>)]□ GoSub □<跳转行标记>

(3)例句

    1 Open"COM1:"As# 1'
    2 On Com(1)GoSub * RECV'
    3 Com(1)On'——允许插入(区间生效)
    4 ''这中间如果插入条件= ON,就跳转到RECV标记的子程序
    11'
    12 Mov P1
    13 Com(1)Stop'——从P1移动到P2点停止插入
    14 Mov P2
    15 Com(1)On'——允许插入
    16 ''这中间如果插入条件= ON,就跳转到RECV标记的子程序
    26'
    27 Com(1)Off'——禁止插入
    28 Close# 1
    29 End

    40 * RECV'——标签
    41 Input# 1,M0001'——接收数据存放到M0001、P0001
    42 Input# 1,P0001
    50 Return 1

2.5.5 Com On/Com Off/Com Stop

①Com On允许插入(类似于中断区间指定)。

②Com Off禁止插入。

③Com Stop插入暂停(插入动作暂停,但继续接收数据,待Com On指令后,立即执行“插入程序”)。