【delphi开源代码栏目提醒】:网学会员为需要delphi开源代码的朋友们搜集整理了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.