DECLARE FUNCTION ReceiveResponseFrom7000% (Port%, RetStr$, Timeout&, Check%) DECLARE FUNCTION printf% (p%, s$) DECLARE FUNCTION print1% (s$) DECLARE FUNCTION print2% (s$) DECLARE FUNCTION print3% (s$) DECLARE FUNCTION print4% (s$) DECLARE FUNCTION SendCmdTo7000% (Port%, Cmd$, Check%) 'DECLARE FUNCTION ReceiveResponseFrom7000 cdecl (BYVAL iPort AS INTEGER, SEG cCmd,BYVAL lTimeout AS LONG,BYVAL iChksum AS INTEGER) FUNCTION print1% (s$) length% = LEN(s$) FOR i% = 1 TO length% tmp% = ToCom1(ASC(MID$(s$, i%))) IF tmp% <> 0 THEN EXIT FOR NEXT i% print1 = tmp% END FUNCTION FUNCTION print2% (s$) length% = LEN(s$) FOR i% = 1 TO length% tmp% = ToCom2(ASC(MID$(s$, i%))) IF tmp% <> 0 THEN EXIT FOR NEXT i% print2 = tmp% END FUNCTION FUNCTION print3% (s$) length% = LEN(s$) FOR i% = 1 TO length% tmp% = ToCom3(ASC(MID$(s$, i%))) IF tmp% <> 0 THEN EXIT FOR NEXT i% print3 = tmp% END FUNCTION FUNCTION print4% (s$) length% = LEN(s$) FOR i% = 1 TO length% tmp% = ToCom4(ASC(MID$(s$, i%))) IF tmp% <> 0 THEN EXIT FOR NEXT i% print4 = tmp% END FUNCTION FUNCTION printf% (p%, s$) length% = LEN(s$) FOR i% = 1 TO length% tmp% = ToCom(p%, ASC(MID$(s$, i%))) IF tmp% <> 0 THEN EXIT FOR NEXT i% printf = tmp% END FUNCTION FUNCTION ReceiveResponseFrom7000% (Port%, RetStr$, Timeout&, Check%) DIM t AS LONG DIM tmp AS INTEGER DIM data1 AS INTEGER DIM idx AS INTEGER DIM i AS INTEGER DIM sum AS INTEGER DIM tmpStr$ RetStr$ = "" idx = 0 FOR t = 0 TO Timeout& tmp = IsCom(Port%) IF tmp <> 0 THEN data1 = ReadCom(Port%) ' tmp = ToCom4(data1) 'for test t = 0 IF data1 = 13 THEN ' tmp = ToCom4(10) 'for test IF Check% <> 0 THEN sum=0 FOR i = 1 TO idx - 2 sum = sum + ASC(MID$(RetStr$, i, 1)) NEXT i sum = sum AND &HFF tmpStr$ = HEX$(sum) IF sum < 16 THEN tmpStr$ = "0" + tmpStr$ IF tmpStr$ = MID$(RetStr$, idx - 1, 2) THEN ReceiveResponseFrom7000 = 0 RetStr$ = LEFT$(RetStr$, idx - 2) ELSE ReceiveResponseFrom7000 = -14 END IF ELSE ReceiveResponseFrom7000 = 0 END IF EXIT FOR ELSE RetStr$ = RetStr$ + CHR$(data1) idx = idx + 1 END IF END IF 'tmp <> 0 NEXT t IF t >= Timeout& THEN ReceiveResponseFrom7000 = -5 END FUNCTION FUNCTION SendCmdTo7000% (Port%, Cmd$, Check%) STATIC sum AS INTEGER STATIC i, j AS INTEGER STATIC data1 AS INTEGER STATIC tmp AS INTEGER sum = 0 j = LEN(Cmd$) tmp = Set485DirToTransmit(Port%) FOR i = 1 TO j data1 = ASC(MID$(Cmd$, i, 1)) tmp = ToCom(Port%, data1) IF Check% <> 0 THEN sum = sum + data1 NEXT i IF Check% <> 0 THEN sum = sum AND &HFF IF sum < 16 THEN tmp = ToCom2(&H30) IF Port% = 1 THEN tmp = print1(HEX$(sum AND &HFF)) ELSE tmp = print2(HEX$(sum AND &HFF)) END IF END IF 'if checksum<>0 tmp = ToCom(Port%, 13) tmp = WaitTransmitOver(Port%) tmp = Set485DirToReceive(Port%) SendCmdTo7000 = 0 END FUNCTION