Einzelnen Beitrag anzeigen

MatRo

Registriert seit: 26. Feb 2014
5 Beiträge
 
#12

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 09:18
Hier mal unser mittlerweile durch die ganzen Versuche verhunster Code um hoffentlich einen kleinen Einblick auf unsere Versuche zu bekommen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sSend: string;
  sRecieve: string;
begin
  sSend := Edit1.Text + '#13';
  IdTCPClient1.IOHandler.WriteLn(sSend);

// sRecieve := IdTCPClient1.IOHandler.ReadLn();
// Memo1.Lines.Add(sRecieve);
// sRecieve := IdTCPClient1.IOHandler.ReadLn();
// Memo1.Lines.Add(sRecieve);
end;

procedure TForm1.CloseButtonClick(Sender: TObject);
begin
  IdTCPClient1.Disconnect();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear();
end;

procedure TForm1.IdIOHandlerStack1Status(ASender: TObject;
  const AStatus: TIdStatus; const AStatusText: string);
begin
  sleep(1000);
end;

procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
  Memo1.Lines.Add('Connected');
end;

procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
  Timer1.Enabled := False;
  Memo1.Lines.Add('Disconnected');
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
begin
  IdTCPClient1.Host := '10.20.40.220';
// IdTCPClient1.Port := 23; // Telnetport;
  IdTCPClient1.Port := 4001;

  IdTCPClient1.Connect();

  sleep(1000);
  IdTCPClient1.IOHandler.WriteLn(chr(13));

  Timer1.Enabled := True;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
  iInfo: integer;
  bInfo: boolean;
  sSend: string;
  sRecieve: string;
  I: integer;
  iBufSize: integer;
begin
  Timer1.Enabled := False;
// iInfo := IdTCPClient1.IOHandler.ReadTimeout; // ist immer 3000 (3sek)
// bInfo := IdTCPClient1.IOHandler.ReadLnTimedout; // stürzt ebenfalls ab ???

// bInfo := IdTCPClient1.IOHandler.Readable(10); // stürzt ebenfalls ab ???
// label1.Caption := '0';
// if bInfo then
// label1.Caption := '1';
// application.processmessages;
// sleep(1000);






// while bInfo do
// begin
// sRecieve := IdTCPClient1.IOHandler.ReadLnRFC(bInfo);
// Memo1.Lines.Add(sRecieve);
// end;

// I := IdTCPClient1.IOHandler.ReadTimeout;
// showmessage(IntToStr(I));

  if IdTCPClient1.IOHandler.Readable() then
  begin
// iBufSize := IdTCPClient1.IOHandler.RecvBufferSize;
// sRecieve := IdTCPClient1.IOHandler.ReadLn();
    sRecieve := IdTCPClient1.IOHandler.readString(100); // 6000
    Memo1.Lines.Add(sRecieve);
  end;
// IdTCPClient1.IOHandler.rea
  Timer1.Enabled := True;
end;
Zurzeit angeschlossen ist ein riesen Switch, bei einer Eingabe wird der Login erfragt, so sehen wir ob was zurück kommt. Nach einer Zeit und einigen Passwort-Abfragen hängt sich die Anwendung auf und tut nichts mehr.
  Mit Zitat antworten Zitat