SendBuff : Array[1..MAX_BUFF] of char;
MS : TMemoryStream;
vb : byte;
vi : integer;
str : Array[1..MAX_BUFF] of char;
s : string;
passlen : string;
function TForm1.creatConnection():boolean; //初始化,先登陆
var
ReceivedString,sVIP: String;
i ,sPort:integer;
sbuff:pchar;
ServerBuff : Array[1..MAX_BUFF] of byte;
begin
result := False;
ZeroSBuff();
MS.Clear;
vb := $01; // STX
MS.Write(i, 1);
vb := $1F; // CLERKLOGIN
MS.Write(i, 1);
s := NODE; //NODE
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, 6);
s := CLERK; //CLERK
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, 5);
passlen := Format('%.2d', [Length(PASSCODE)]);
strlcopy(@(str[1]), pchar(passlen), length(s));
MS.Write(str, 2);
s := PASSCODE;
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, length(s));
vb := $02; //ETX;
MS.Write(i, 1); i := MS.Position;
MS.Position := 0;
MS.Read(SendBuff, i);//CRC校验添加到包尾
AddParityChar(SendBuff);//这里这样写对吗????
//还是传MS,具体完整的CRC函数该怎么改??
//-------------------------------------------------------UDPClient1.SendBuffer(SendBuff,i+1);procedure TForm1.AddParityChar(var buffer: array of char);
var
i, len: Integer;
count: Longint;
begin
count := 0;
len := StrLen(buffer);
for i:=0 to len-1 do
begin
count := count + length(buffer[i]);
end;
StrPCopy(pchar(buffer[len]), format('%16l', [count]) +'0');end;///-----------------------------------------------------
原CRC校验Demo(C语言)
AddParityChar(BYTE *buffer)
{
int i,len;
long count=0;
len=strlen((char *)buffer);
for (i=0;i<len;i++)
count+=buffer[i];
buffer[len]=count%16L+'0';
}
MS : TMemoryStream;
vb : byte;
vi : integer;
str : Array[1..MAX_BUFF] of char;
s : string;
passlen : string;
function TForm1.creatConnection():boolean; //初始化,先登陆
var
ReceivedString,sVIP: String;
i ,sPort:integer;
sbuff:pchar;
ServerBuff : Array[1..MAX_BUFF] of byte;
begin
result := False;
ZeroSBuff();
MS.Clear;
vb := $01; // STX
MS.Write(i, 1);
vb := $1F; // CLERKLOGIN
MS.Write(i, 1);
s := NODE; //NODE
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, 6);
s := CLERK; //CLERK
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, 5);
passlen := Format('%.2d', [Length(PASSCODE)]);
strlcopy(@(str[1]), pchar(passlen), length(s));
MS.Write(str, 2);
s := PASSCODE;
strlcopy(@(str[1]), pchar(s), length(s));
MS.Write(str, length(s));
vb := $02; //ETX;
MS.Write(i, 1); i := MS.Position;
MS.Position := 0;
MS.Read(SendBuff, i);//CRC校验添加到包尾
AddParityChar(SendBuff);//这里这样写对吗????
//还是传MS,具体完整的CRC函数该怎么改??
//-------------------------------------------------------UDPClient1.SendBuffer(SendBuff,i+1);procedure TForm1.AddParityChar(var buffer: array of char);
var
i, len: Integer;
count: Longint;
begin
count := 0;
len := StrLen(buffer);
for i:=0 to len-1 do
begin
count := count + length(buffer[i]);
end;
StrPCopy(pchar(buffer[len]), format('%16l', [count]) +'0');end;///-----------------------------------------------------
原CRC校验Demo(C语言)
AddParityChar(BYTE *buffer)
{
int i,len;
long count=0;
len=strlen((char *)buffer);
for (i=0;i<len;i++)
count+=buffer[i];
buffer[len]=count%16L+'0';
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货