Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Moxa NPort 5150 mit IPSerial auf Windows Server 2008 (https://www.delphipraxis.net/179312-moxa-nport-5150-mit-ipserial-auf-windows-server-2008-a.html)

taveuni 26. Feb 2014 09:00

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008
 
Dies ist der richtige Weg.
Der Moxa setzt TCP/IP zu RS232 absolut zuverlässig um.
Da müsst ihr in der Umsetzung des Herstellerprotokolls ein Problem haben.

Was lief denn nicht wie erwartet?
Was ist es denn für ein Protokoll? Ascii oder Binär. Und wie habt Ihrs versucht?


Nachtrag:
Einfacher Test:
Eine Brücke an der seriellen Schnittstelle des Moxa RX und TX machen.
Dann via TCP/IP etwas senden. Das Echo ist das gesendete an die serielle Schnittstelle.

MatRo 26. Feb 2014 09:18

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008
 
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.

taveuni 26. Feb 2014 09:45

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008
 
Sieht ja abenteuerlich aus.
Aber mal davon abgesehen:

Das was mit Button1 gesendet wird entspricht dem Protokoll des Subsystems?
Demzufolge ist es ein Ascii Protokoll mit abschliessendem CR.
Falls ja antwortet das System korrekt?

Und was heisst hängt sich auf?


Nachtrag:
Lade Dir mal einen neutralen TCP Client herunter z.b. den Hercules.
Benötigt kein Setup kann einfach gestartet werden.
Sende mal mit dem Deine Anfrage(n) um andere Fehler auszuschliessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz