|
@@ -0,0 +1,55 @@
|
|
|
+{ %fail }
|
|
|
+
|
|
|
+type
|
|
|
+ s8=shortint;
|
|
|
+ s16=smallint;
|
|
|
+ s32=longint;
|
|
|
+ addrtype=pchar;
|
|
|
+ InPacket=pchar;
|
|
|
+
|
|
|
+PROCEDURE getlrc1 ( Buffer : AddrType ;
|
|
|
+ StartPos : s32 ;
|
|
|
+ MaxPos : s32 ;
|
|
|
+ LastChar : s32 ;
|
|
|
+ VAR LRCPos : s16 ;
|
|
|
+ VAR LRCVal : s8); CDECL; [Public, alias: 'getlrc'];
|
|
|
+begin
|
|
|
+ LRCPos:=200;
|
|
|
+ LRCVal:=100;
|
|
|
+end;
|
|
|
+
|
|
|
+
|
|
|
+PROCEDURE CalcLRC ( APacket : InPacket ;
|
|
|
+ PacketLen : s32;
|
|
|
+ StartPos : s16 ;
|
|
|
+ EndingChar: s16 ;
|
|
|
+ VAR LRCPos : s16 ;
|
|
|
+ VAR LRCVal : s8 );
|
|
|
+
|
|
|
+
|
|
|
+PROCEDURE getlrc ( Buffer : AddrType ;
|
|
|
+ StartPos : s32 ;
|
|
|
+ MaxPos : s32 ;
|
|
|
+ LastChar : s32 ;
|
|
|
+ VAR LRCPos : s16 ;
|
|
|
+ VAR LRCVal : s8); CDECL; EXTERNAL;
|
|
|
+
|
|
|
+BEGIN
|
|
|
+getlrc (APacket,
|
|
|
+ StartPos - 1,
|
|
|
+ PacketLen,
|
|
|
+ EndingChar, {--ETX or SO--}
|
|
|
+ LRCPos,
|
|
|
+ LRCVal);
|
|
|
+LRCPos := LRCPos + 1;
|
|
|
+END; { CalcLRC }
|
|
|
+
|
|
|
+
|
|
|
+VAR
|
|
|
+ LRCPos : s16 ;
|
|
|
+ LRCVal : s8;
|
|
|
+
|
|
|
+begin
|
|
|
+ calclrc('12345',5,2,ord('5'),LRCPos,LRCVal);
|
|
|
+ writeln(LRCPos,' ',LRCVal);
|
|
|
+end.
|