发布于 2005-11-13 22:28:09
0楼
打开一个DB块的时候,系统会自动把上一个打开的DB块关闭的...你上面的程序思路是对的. 如果要打开两个块,可以参考我在博客日志里发的关于"十六进制转换成ASCII"的程序,我给你粘过来吧,具体你自己看看吧,当然这个功能在STEP7中已经有了,是FC95,只是它占用空间大一些,我无聊了自己写了一个玩的,你可以参考一下:
FUNCTION FC10:VOID
VAR_INPUT
IN:POINTER;
N:INT;
END_VAR
VAR_OUTPUT
OUT:POINTER;
END_VAR
VAR_TEMP
FLAG:BOOL;
NTMP,DBLKNO:INT;
AR2TMP:DWORD;
END_VAR
BEGIN
L 0;
L N;
==I;
JZ EXIT;
TAR2 AR2TMP;
L P#IN;
LAR1;
L W[AR1,P#0.0];
T DBLKNO;
OPN DB[DBLKNO];
L D[AR1,P#2.0];
LAR1;
L P#OUT;
LAR2;
L 0;
L W[AR2,P#0.0];
==I;
JZ NODB;
T DBLKNO;
OPN DI[DBLKNO];
L D[AR2,P#2.0];
OD DW#16#05000000;
JU BEGN;
NODB:L D[AR2,P#2.0];
BEGN:LAR2;
L N;
NEXT:T NTMP;
CONT:L B[AR1,P#0.0];
AN FLAG;
S FLAG;
JC _001;
R FLAG;
AW W#16#000F;
JU _002;
_001:SRW 4;
_002:L B#16#A;
JC AX30;
TAK;
L B#16#37;
+I;
JU SEND;
AX30:TAK;
L B#16#30;
+I;
SEND:T B[AR2,P#0.0];
+AR2 P#1.0;
A FLAG;
JC CONT;
+AR1 P#1.0;
L NTMP;
LOOP NEXT;
LAR2 AR2TMP;
EXIT:SET;
SAVE;
END_FUNCTION
I can do it