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
Seite 1 von 2  1 2      
MatRo

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

Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 06:32
Delphi-Version: XE
Guten Tag,
wir versuchen im Moment unsere COM-Schnittstellen ans Netz zu bringen. Dafür nehmen wir den NPort 5150 von Moxa. Dieses Gerät ermöglicht es, die Daten der COM-Schnittstelle quasi als TCP-IP Dienst zu verwenden. Über Hyperterm kommen wir auch ohne Probleme auf das daran angeschlossene Gerät. Mit Delphi waren wir bisher leider nicht so erfolgreich. Es gibt ein Beispielprojekt welches leider auch überhaupt nicht funktioniert. Es scheitert direkt schon am Anfang:
Delphi-Quellcode:
nsio_init();
ip := Edit1.Text;
Val(Edit2.Text, pid, code);

ret := nsio_open(PChar(ip), pid, 3000); // -2: Bad Parameter
Das sind die ersten Zeilen, es wird eine IP als ein null terminierter String übergeben, dazu der Port den wir auch mit Hyperterm getestet haben sowie der Timeout. Das nsio_open ist eine Methode aus der IPSerial.dll (wo wir auch verschiedene DLLs ausprobiert haben). Der Returncode ist -2 (Bad Parameter), ungültige Eingaben geben einen anderen Code zurück.

Ersteinmal die Frage: Hat jemand schonmal mit IPSerial bzw. eventuell auch NPort gearbeitet und einen Hinweis?
Wenn ihr noch nicht damit gearbeitet habt, kennt ihr Alternativen um über TCP-IP auf die COM-Schnittstelle (wie Hyperterm) zuzugreifen? Die Indy-Komponente haben wir schon ausprobiert, da kriegen wir auch was zurück aber leider ist das nicht brauchbar und unzuverlässig.

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

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

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 06:42
Wie ist denn nsio_open() deklariert?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Moxa NPort 5150 mit IPSerial auf Windows Server 2008

  Alt 26. Feb 2014, 06:56
Im Beispiel des Manuals (Seite 85) hat nsio_open() nur 2 Parameter.

Welches Delphi (Unicode?)
Markus Kinzler

Geändert von mkinzler (26. Feb 2014 um 07:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

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

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
526 Beiträge
 
Delphi 11 Alexandria
 
#5

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
 
#6

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.487 Beiträge
 
Delphi 7 Enterprise
 
#7

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
 
#8

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
526 Beiträge
 
Delphi 11 Alexandria
 
#9

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
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2      

 

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 14:50 Uhr.
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