[GELÖST] Beispielanwendung SocketBusAdapter

27. Dezember 2010 16:39

Hallo,

ich versuche in VB.NET einen Client zu entwickeln, welcher via NAV SocketBusAdapter mit dem NAS kommuniziert. Hat hierzu jemand eine entsprechende Beispielanwendung, die Anwendung muss nicht unbedingt in VB.NET erstellt worden sein.

Ich bin laut der mitgelieferten Hilfe vorgegangen erhalte jedoch einen Fehler, wenn ich der OutMessage einen Stream zuweise (habe nur den relevanten Code reinkopiert):

Code:
Dim Writer As System.IO.StreamWriter
Dim OutMsg As NSCOMCOM2Lib.OutMessage
...
Writer = OutMsg.GetStream()


Die Fehlermeldung lautet wie folgt (statt StreamWriter habe ich auch schon andere Streamobjekte ausprobiert):
Code:
System.InvalidCastException: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.IO.StreamWriter" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.
Zuletzt geändert von Steini am 10. Januar 2011 16:51, insgesamt 1-mal geändert.

Re: Beispielanwendung SocketBusAdapter

27. Dezember 2010 18:16

Hallo Steini,

wenn du noch irgendwo eine 4er- bzw. 5er- Version installiert hast, dann findest du unter 'C:\Programme\Gemeinsame Dateien\Navision\Communication Component' (bei der 4er, 5er sinngem.) eine Datei: devguide.chm. Dort ist beschrieben, wie die Komponenten anzuwenden sind, ansonsten evtl. im Technet.

Gruß, Fiddi

Re: Beispielanwendung SocketBusAdapter

27. Dezember 2010 21:59

Hallo,

nach dieser Anleitung bin ich vorgegangen, dort ist nur ein VB Beispiel anhand der Message-Queue mit XML-DOM Komponenten. Dieses hab ich mir als Beispiel genommen, ebenso die SocketBus Beispiele für NAV. Jedoch stoße ich immer wieder auf das Problem keinen OutMsg.GetStream() kompatiblen Stream in .NET zu finden.

Und zum Thema QueryInterface (siehe Fehlermeldung) spuckt Google irgendwie auch nicht viel brauchbares aus. Auch mir diesem Link kann ich nicht viel anfangen:
http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.queryinterface.aspx
Irgendwie fehlt mir da ein Beispiel...

Gruß
Thomas

Re: Beispielanwendung SocketBusAdapter

28. Dezember 2010 11:06

Guten Morgen,

muss das nicht
Code:
Dim Writer As System.IO.StreamWriter
Dim OutMsg As NSCOMCOM2Lib.OutMessage
...
Writer.write(OutMsg.GetStream())
heißen?

Volker

Re: Beispielanwendung SocketBusAdapter

28. Dezember 2010 13:04

vsnase hat geschrieben:Guten Morgen,

muss das nicht
Code:
Dim Writer As System.IO.StreamWriter
Dim OutMsg As NSCOMCOM2Lib.OutMessage
...
Writer.write(OutMsg.GetStream())
heißen?

Volker


Hallo Volker,

das habe ich aus schon ausprobiert, aber normalerweise müsste ich erstmal den Stream zuweisen, dann befüllen:

Code:
Writer = OutMsg.GetStream()
Writer.write("Meine Nachricht an NAV")
OutMsg.Send(0)

Re: Beispielanwendung SocketBusAdapter

28. Dezember 2010 14:16

schau dir mal das ADCS an, die kommunizieren in der neueren Version 5.1+ auch über Sockets.

Gruß, fiddi

Re: Beispielanwendung SocketBusAdapter

10. Januar 2011 12:50

Hallo,

ich habs jetzt hinbekommen, allerdings VB.NET seitig nicht mit der NAV NSCOMCOM2Lib, sondern mit Bordmitteln von Windows: System.Net.Sockets .TcpClient bzw. .NetworkStream.