2.6 通信指令详解
(1)指令格式
①Open—开启通信口。
②Close—关闭通信口。
③Print#—以ASCII码输出数据,结束码CODE为CR。
④Input#—接收ASCII码数据文件,结束码CODE为CR。
⑤On Com GoSub—根据外部通信口输入数据,调用子程序。
⑥Com On—允许根据外部通信口输入数据进行“插入处理”。
⑦Com Off—不允许根据外部通信口输入数据进行“插入处理”。
⑧Com Stop—停止根据外部通信口输入数据进行“插入处理”。
(2)指令例句
1 Open"COM1□"As#1′——开启通信口COM1并将从通信口COM1传入的文件作为1#文件。 2 Close#1′——关闭1#文件。 3 Close′——关闭全部文件。 4 Print#1□"TEST"′——输出字符串“TEST”到1#文件。 5 Print#2□"M1="□M′——输出字符串“M1=”到2#文件。例:如果M1=1则输出"M1=1"+CR。 6 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。 7 Print#1,M5,P5′——输出变量M5和P5点数据到1#文件。例:如果M5=8,P5为X=123.7、Y=238.9、Z=33.1、A=19.3、B=0、C=0、FL1=1、FL2=0,则输出数据为:"8,(123.7,238.9,33.1,19.3,0,0)(1,0)"+CR。 8 Input#1,M3′——输入接收指令。指定输入的数据=M3。例:如果输入数据="8"+CR则 M3=8。 9 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)。 10 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)。 11 On Com(2)GoSubRECV′——根据从外部通信口 COM2输入的指令调用子程序RECV。 12 Com(1)On′——允许通信口COM1工作。 13 Com(2)Off′——关闭COM2通信口。 14 Com(1)Stop′——停止COM1通信口的工作(保留其状态)。
以下各节对通信指令进行详细解释。
2.6.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′——前进到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码格式接收“101.00,202.00,303.00”外部数据。 5 P_01.X=M1′——对P_01.点的X赋值,P_01.X=101。 6 P_01.Y=M2′——对P_01.点的Y赋值,P_01.Y=202。 7 P_01.C=Rad(M3)′——对P_01.点的C赋值,P_01.C=303。 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#文件。 3 Close#1′——关闭1#文件。
通信口的通信方式可以用参数设置,参见图2-14。
图2-14 用参数设置通信口的通信方式
本参数设置了通信口COM1~COM8的通信方式。例如:COM1通信口的通信方式为RS232。
2.6.2 Print—输出字符串指令
(1)指令格式
Print□#<文件号>□[<式1>]…[<式2>]
(2)术语解释
①<文件号>——OPEN指令指定的“文件号”。
②<式>——数值表达式、位置表达式、字符串表达式。
(3)指令例句
输出信息到文件“temp.txt”。
1 Open"temp.txt"For APPEND As#1′——将文件“temp.txt”视作1#文件。 2 MDATA=150′——赋值。 3 Print#1,"*** Print TEST***"′——向1#文件输出字符串“***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.6.3 Input—从指定的文件中接收数据,接收的数值为ASCII码
(1)指令格式
Input□#<文件号>□[<输入数据名>]…[<输入数据名>]
(2)术语解释
<输入数据名>——输入的数据被存放的位置,以变量表示。
(3)指令样例
1 Open"temp.txt"For Input As #1′——将“temp.txt”文件视作1#文件打开。 2 Input #1,CABC$′——接收1#文件传送过来的数据(从开始到换行符为止),CABC$=“接收到的数据”。 10 Close #1′——关闭1#文件。
2.6.4 On Com GoSub指令
(1)功能
如果从通信端口有插入指令输入,就跳转到指定的子程序。
(2)指令格式
On□Com[(<文件号>)]□GoSub□<跳转行标记>
(3)例句
1 Open"COM1:"As #1′——打开通信口“COM1”,并将从“COM1:”传入的文件作为1#文件。 2 On Com(1)GoSub*RECV′——如果从通信口有插入指令输入,就跳转到指定的子程序*RECV。 3 Com(1)On′——允许插入(程序区间起点)。这中间如果插入条件=ON,就跳转到RECV标记的子程序。 12 Mov P1′——前进到P1点。 13 Com(1)Stop′——停止插入(程序区间终点)。 14 Mov P2′——前进到P2点。 15 Com(1)On′——允许插入(程序区间终点)。 16 ′这中间如果插入条件=ON,就跳转到 RECV标记的子程序。 27 Com(1)Off′——禁止插入。 28 Close#1′——关闭1#程序。 29 End′——主程序结束。 40 *RECV′——子程序标签。 41 Input #1,M0001′——接收数据存放到M0001。 42 Input #1,P0001′——接收数据存放到P0001。 50 Return1′——子程序结束。
2.6.5 Com On/Com Off/Com Stop
①Com On—允许插入(类似于中断区间指定)。
②Com Off—禁止插入。
③Com Stop—插入暂停(插入动作暂停,但继续接收数据,待Com On指令后,立即执行“插入程序”)。