?? functionunit.pas
字號:
unit FunctionUnit;
interface
var
Port: string;
Speed: string;
DataBit:string;
CheckBit:string;
StopBit:string;
function CalMoneyCheck(BA : array of byte;ALow,AHigh:smallint):Byte;
function CalCheck(BA : array of byte;ALow,AHigh:smallint):Byte;
function Encrypt(AByte: byte):byte;
function AntiEncrypt(AByte: byte):byte;
function IsArrayValid(AByteAry : array of byte):Boolean;
function ComStrToInt(AComStr:string):smallint;
function EncryptStr(AStr:string):string;
implementation
uses
Sysutils;
//計算金錢校驗位
function CalMoneyCheck(BA : array of byte;ALow,AHigh:smallint):Byte;
var
i:smallint;
mTotal:integer;
begin
mTotal := $13;
for i:=ALow to AHigh do
begin
mTotal := mTotal + BA[i];
end;
Result := mTotal mod $ff;
end;
//檢查報文是否正確。
function IsArrayValid(AByteAry : array of byte):Boolean;
var
i,mHigh : integer;
mByte : byte;
begin
//檢查報文頭部
if (AByteAry[0] <> $0f)
or (AByteAry[1] <> $f0) then
begin
Result := False;
Exit;
end;
//mLen為AByteAry最后
mHigh := Length(AByteAry)-1;
//將$d2和所有報文作異或
mByte := $d2;
for i:=0 to mHigh-1 do
begin
mByte := mByte xor AByteAry[i];
end;
//檢查校驗位
if mByte <> AByteAry[mHigh] then Result := False
else Result := True;
end;
function CalCheck(BA : array of byte;ALow,AHigh:smallint):Byte;
var
mByte:byte;
i:smallint;
begin
mByte := $d2;
for i:=ALow to AHigh do
begin
mByte := mByte xor BA[i];
end;
Result := mByte;
end;
//加密數據
function Encrypt(AByte: byte):byte;
var
mByte3,mByte6: byte;
begin
//取第三位
mByte3 := AByte and $8;
//第三位移動第六位
mByte3 := mByte3 shl 3;
//取第六位
mByte6 := AByte and $40;
//第6位移動第3位
mByte6 := mByte6 shr 3;
//第6位\第3位交換位置
AByte := AByte or mByte3;
AByte := AByte or mByte6;
//和$5d異或
Result := (AByte xor $5d);
end;
//解密數據
function AntiEncrypt(AByte: byte):byte;
var
mByte3,mByte6: byte;
begin
//和$5d異或
AByte := (AByte xor $5d);
//取第三位
mByte3 := AByte and $8;
//第三位移動第六位
mByte3 := mByte3 shl 3;
//取第六位
mByte6 := AByte and $40;
//第6位移動第3位
mByte6 := mByte6 shr 3;
//第6位\第3位交換位置
AByte := AByte or mByte3;
AByte := AByte or mByte6;
Result := AByte;
end;
function ComStrToInt(AComStr:string):smallint;
var
mLen: integer;
mResult: string;
begin
mLen := Length(AComStr);
mResult := Copy(AComStr,4,mLen-3);
Result := StrToInt(mResult);
end;
function EncryptStr(AStr:string):string;
begin
Result := AStr;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -