AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Moxa NPort 5150 mit IPSerial auf Windows Server 2008
Thema durchsuchen
Ansicht
Themen-Optionen

Moxa NPort 5150 mit IPSerial auf Windows Server 2008

Ein Thema von MatRo · begonnen am 26. Feb 2014 · letzter Beitrag vom 26. Feb 2014
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 07:03
Auf jeden Fall steht dort
Code:
char
und nicht
Code:
wchar_t
. Deshalb wäre in Delphi > 2007 PAnsiChar zu verwenden.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
535 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 07:17
Mir ist nicht ganz klar was Ihr machen wollt.
Wir arbeiten seit Jahren mit Moxa N-Ports.

Es gibt zwei Anwendungen (Voraussetzung: Das Subsystem kann nur RS232 oder RS485).

1.
Ihr habt eine bereits entwickelte Software welche nur über RS232 kommunizieren kann:
Dann wird auf dem Rechner der Moxa Treiber installiert und das Programm kommuniziert
via Realcom.

2.
Ihr entwickelt ein neues Programm:
Der Moxa wird ausschliesslich als Protokollwandler gebraucht.
Der Nport wird auf TCP Client oder Server konfiguriert.
Auf dem Rechner wird keine Moxa Software installiert.
Ihr setzt die Kommunikation auf TCP/IP Basis um. Der Moxa wandelt die Kommunikation auf RS232 oder RS485.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
MatRo

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

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 08:14
Hallo, danke für eure Antworten.

Also die init ist so deklariert: function nsio_open(server_ip: PChar; port_index: Longint; timeouts: Longint): Longint; stdcall;

@Taveuni
Zweiteres trifft zu, konfiguriert als TCP-Server:
2.
Ihr entwickelt ein neues Programm:
Der Moxa wird ausschliesslich als Protokollwandler gebraucht.
Der Nport wird auf TCP Client oder Server konfiguriert.
Auf dem Rechner wird keine Moxa Software installiert.
Ihr setzt die Kommunikation auf TCP/IP Basis um. Der Moxa wandelt die Kommunikation auf RS232 oder RS485.

Ich will nicht ausschließen, dass wir dann die falsche DLL bzw. die falsche IPSerial.pas zugeschoben bekommen haben. Die DLL ist vom 16.11.2010, 160kb (x86). Die andere (x64) ist 191 kb groß. Kann mir jemand denn ein passendes pärchen für Delphi XE 32 Bit inklusive der IPSerial.pas und der DLL zukommen lassen?

Beste Grüße
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 08:25
Versuche mal, die Funktion so zu deklarieren. Vermutlich ist die IPSerial.pas noch für ältere Delphi-Versionen.
function nsio_open(server_ip: PAnsiChar; port_index: Longint; timeouts: Longint): Longint; stdcall;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
MatRo

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

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 08:38
Ich habs mal versucht mit dem umdeklarieren.

Delphi-Quellcode:
ip := PAnsiChar(Edit1.Text);
function nsio_open(server_ip: PAnsiChar; port_index: Longint; timeouts: Longint): Longint; stdcall;
Leider gleicher return value -2. Dann hab ich mal das timeout rausgenommen und habe eine Zugriffsverletzung bekommen. Wird immer die DLL aus dem Beispielverzeichnis benutzt oder sucht der vorher vllt in System32 etc.?
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
535 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 08:45

@Taveuni
Zweiteres trifft zu, konfiguriert als TCP-Server:

[..]

Ich will nicht ausschließen, dass wir dann die falsche DLL bzw. die falsche IPSerial.pas zugeschoben bekommen haben. Die DLL ist vom 16.11.2010, 160kb (x86). Die andere (x64) ist 191 kb groß. Kann mir jemand denn ein passendes pärchen für Delphi XE 32 Bit inklusive der IPSerial.pas und der DLL zukommen lassen?
Vermutlich liegt hier ein Verständnis Problem vor.
Die Moxa ipSerial.dll ist ausschliesslich ein Wrapper für die RealCom RS232 Kommunikation.
Ausserdem ist sie buggy und outdated. Diese Variante wäre also meine Variante 1.
Also die Moxa Treiber sind auf dem Rechner installiert und simulieren einen realen Comport.
Falls Ihr aus mir momentan nicht erschliessbaren Gründen die Kommunikation so entwickeln wollt -
nehmt Asyncpro oder ähnliches.

Für die TCP/IP Kommunikation kannst Du irgendeine Library wie ICS, Indy, Synapse usw. nehmen.

Alles klar?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
MatRo

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

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 08:54
Also wie wir uns das vorgestellt haben:

Alte Geräte (Waage/Pata Nosta) die auf die COM-Schnittstelle bauen sollen über den NPort über das Netzwerk erreichbar sein. Die Clients sitzen auf verschiedenen Terminalservern und sollten durch unsere Lösung mit den COM Geräten kommunizieren können. D.h. eine Waage ist an den NPort angeschlossen und der Client kann z.B. das aktuelle Gewicht über unsere Delphi-Anwendung erfragen über das Netzwerk erfragen. Die Clients sind z.B. Thin Clients die selber über keinen Com Port mehr verfügen und nur eine RDP-Verbindung zu unseren Terminal Servern aufbauen. Da unser Netzwerk ziemlich groß ist brauchen wir auch pro Client verschiedene und manchmal auch keine Com Ports.

Indy haben wir bereits probiert aber es lief nicht so wie erwartet. Wir kommen an den COM Port aber die Verbindung ist nicht zuverlässig, auch hier kann ich keine Fehler in der Programmierung ausschließen.

Beste Grüße
Matthias
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
535 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 09:00
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.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (26. Feb 2014 um 09:04 Uhr) Grund: Nachtrag eingefügt
  Mit Zitat antworten Zitat
MatRo

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

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
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz