16,747
社区成员




var
s: string;
i:Integer;
mystr,showstr:String;
begin
mystr := ''; //初始化分析用字符串为空
showstr := ''; //初始化显示用字符串为空
SetLength(s, Len); //设定接收长度
CopyMemory(PChar(s), PChar(Integer(Buffer)), Len); //接收数据
//忽略网络测试命令
if s='net test' then //net test 为自定义的网络测试命令
begin
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + s +'网络测试命令');
Exit;
end;
for i := 1 to Length(s) do //将接收数据转换为16进制字符串
begin
try
mystr := mystr+ IntToHex(Ord(s[i]), 2); //分析用字符串
showstr := showstr+' '+ IntToHex(Ord(s[i]), 2); //显示用字符串
except
end;
end;
mystr:=Trim(mystr); //去除前后空字符
showstr:= Trim(showstr);
mmoReceive.Lines.add(Format('收到来自: %s:%d'#13#10, [FromIP, Port]) + showstr);
//////////////////
while Length(mystr)>0 do //处理分析字符串
begin
if copy(mystr,1,2)= '81' then //81信号状态,不需存储,直接显示
begin
try
RedGreenLight(mystr,FromIP); //信号状态更新显示
mystr := Copy(mystr,21,Length(mystr));//出错的时候 程序停止到这儿 except
end;
end