У меня есть TCP-сервер для чтения данных из некоторых разных портов.
Порт 55000 подключен к аппаратному устройству, но другие порты будут получать данные от программных клиентов.
Мой кодпоказано ниже.
Все порты, кроме 55000, работают хорошо, но я не получаю никаких данных на 55000. Wire-Shark показывает, что все хорошо на уровне TCP, также программное обеспечение Math-Lab может получать данныено Инди не может.
Как мне найти и исправить проблему?
ccsReCStatus := false;
offReCStatus := false;
case AContext.Binding.Port of
55000: begin
repeat
aByte := AContext.Connection.IOHandler.ReadByte;
inputOfflineStr := inputOfflineStr + chr(aByte);
if inputOfflineStr.Length>1000 then
begin
TThread.Synchronize(
nil,
procedure
begin
Memo14.Lines.Add( inputOfflineStr );
inputOfflineStr:='';
end);
end;
until offReCStatus = true;
end;
35758: begin
inputCcsStr :='';
repeat
aByte := AContext.Connection.IOHandler.ReadByte;
if aByte=$C0 then
begin
TThread.Synchronize(
nil,
procedure
begin
memo14.Lines.Add( datetimetostr(now) + ' :' + inputCcsStr );
inputCcsStr:='';
end);
end
else
begin
inputCcsStr := inputCcsStr + aByte.ToHexString;
AbLED482.Tag := DateTimeToUnix(now);
AbLED482.Checked := true;
end;
until ccsReCStatus = true;
end;
2222: begin
RStr:='';
repeat
aByte := AContext.Connection.IOHandler.ReadByte;
if (aByte = $C0) and (RStr='') then
begin
RStr:='';
end
else
if (aByte = $C0) and (RStr<>'') then
begin
TThread.Synchronize(
nil,
procedure
begin
memo14.Lines.Add( RStr );
RStr := '';
end);
end
else
begin
RStr:=RStr+chr(aByte);
end;
until ccsReCStatus = true;
end;
end;