[POS]Problem beim Öffnen einer Kassenschublade

25. Juli 2016 23:31

Hallo liebe Dynamics Community!

Ich verbinde die Kassenschublade direkt (ohne einen Drucker) und benutze dafür ein "RJ45 from drawer to RJ12 the PC" Kabel.

POS Treiber von hier und POS for .NET von hier intalliert.

Es gibt in beiden Packs Test-tools mit denen es mir gelingt, die Kassenschublade automatisch zu öffnen.
DIe Tool-Apps sehen ungefähr so aus wie in diesem PDF(vom POS Treiber Pack) https://drive.google.com/open?id=0B5eop ... G5RVXRtS2c

Ich habe ein Paar DLLs von dem .NET for POS Pack verwiesen und RunOnClient eingeschaltet

Ich brauche nur eine Funktion - die Schublade zu öffnen, den Rest mit dem Info check etc kann man schneiden.


Es konnte keine Instanz erstellt werden.
Das hilft nicht

Danke.
Zuletzt geändert von marcussulic am 10. Januar 2017 18:30, insgesamt 6-mal geändert.

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 07:44

Hallo,

zunächst einmal herzlich willkommen im Forum.

Zu deiner Frage:

Es scheint, alsob du den Constructor eine s Dotnet- Objektes nicht ausgerufen hast, bevor du dieses Objekt benutzt. Dazu wäre es interessant zu wissen, an welcher Stelle in deinem Programm dieser Fehler auftritt.

Ein nicht ganz unwichtige Info noch: Die DontNet- Variablen sollten auf dem Client instantiiert werden, damit du auch die Schublade errreichst.

Gruß Fiddi

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 09:25

Versionsabweichungen beim .NET-Framework können auch solche Probleme verursachen, Tools zum prüfen hier:
http://stackoverflow.com/questions/227886/how-do-i-determine-the-dependencies-of-a-net-application

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 09:58

Ich zeige euch ein Paar Bilder, da ich schon den Zugriff auf den Rechner mit dem Code habe.



fiddi hat geschrieben:(...)Es scheint, alsob du den Constructor eine s Dotnet- Objektes nicht ausgerufen hast, bevor du dieses Objekt benutzt. Dazu wäre es interessant zu wissen, an welcher Stelle in deinem Programm dieser Fehler auftritt.(...)

Der Fehler tritt auf als ich den Öffne Kasse Knopf drücke.
Ist die OPOSCashDrawerClass kein Constructor?

Ansonsten habe ich bei "PoSDrawer" keinen Constructor edit:sorry für so ein schlechtes Bild, das Feld "Constructors" ist einfach Leer hier


Kowa hat geschrieben:Versionsabweichungen beim .NET-Framework können auch solche Probleme verursachen, Tools zum prüfen hier rechts:
http://stackoverflow.com/questions/227886/how-do-i-determine-the-dependencies-of-a-net-application

Ich werde es überprüfen, so schnell ich kann.

Danke für die schnellen Antworten.
Zuletzt geändert von marcussulic am 10. Januar 2017 18:36, insgesamt 1-mal geändert.

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 10:22

Hallo,

wo wird die Komponente denn ausgeführt? auf dem Server oder dem Client?

steht in der Ereignisanzeige evtl. etwas erhellendes?

Gruß Fiddi

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 12:18

Eine Warnung von der Ereignisanzeige:
Code:
Server instance: DynamicsNAV90
Tenant ID: default
Session type: RoleTailoredClient
Session ID: 5
User:User-CASHDESK\admin
Type: Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLDotNetCreateException
SuppressMessage: False
SuppressExceptionCreatedEvent: False
FatalityScope: Call
Message: Eine Instanz des folgenden .NET Framework-Objekts kann nicht erstellt werden: Montage POS.Devices.OPOSCashDrawer, Version=1.13.0.0, Culture=neutral, PublicKeyToken=25db91e28cd23c98, Typ POS.Devices.OPOSCashDrawerClass.
StackTrace:
     bei Microsoft.Dynamics.Nav.Service.ServiceCall.GetClientReturnValue(Action invokeCallback)
     bei Microsoft.Dynamics.Nav.Service.NSClientCallback.CreateDotNetHandle(String assemblyFullName, String typeName, Guid formHandle, String varName, Boolean createInstance, Object[] arguments)
     bei Microsoft.Dynamics.Nav.Runtime.NavDotNet.CreateDotNet(Object[] arguments)
Source: Microsoft.Dynamics.Nav.Service
HResult: -2146233088
----------------------------------
Type: Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLDotNetCreateException
SuppressMessage: False
SuppressExceptionCreatedEvent: False
FatalityScope: Call
Message: Eine Instanz des folgenden .NET Framework-Objekts kann nicht erstellt werden: Montage POS.Devices.OPOSCashDrawer, Version=1.13.0.0, Culture=neutral, PublicKeyToken=25db91e28cd23c98, Typ POS.Devices.OPOSCashDrawerClass.
StackTrace:
     bei Microsoft.Dynamics.Nav.Types.NavAutomationHelper.Create(Type objectType, String assemblyFullName, String typeName, Object[] arguments)
     bei Microsoft.Dynamics.Nav.Types.NavAutomationHelper.CreateDotNetObject(String assemblyFullName, String typeName, Object[] arguments)
     bei Microsoft.Dynamics.Nav.Client.AutomationHandler.CreateDotNetHandleCore(String assemblyFullName, String typeName, Guid formHandle, String varName, Boolean createInstance, NavAutomationArgument[] arguments)
     bei Microsoft.Dynamics.Nav.Client.AutomationHandlerBase.CreateDotNetHandle(String assemblyFullName, String typeName, Guid formHandle, String varName, Boolean createInstance, NavAutomationArgument[] arguments)
     bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass36.<CreateDotNetHandle>b__35()
     bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
     bei Microsoft.Dynamics.Nav.Client.ServerInvocationManager.DoClientRequestAndCatch(Action clientRequest, Action`1 sendToServerIfNotFaulted)
Source: Microsoft.Dynamics.Nav.Types
HResult: -2146233088
----------------------------------
Type: System.Runtime.InteropServices.COMException
ErrorCode: -2147221164
Message: Die COM-Klassenfactory für die Komponente mit CLSID {CCB90042-B81E-11D2-AB74-0040054C3719} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
StackTrace:
     bei System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
     bei System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
     bei System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
     bei System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
     bei System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     bei Microsoft.Dynamics.Nav.Types.NavAutomationHelper.Create(Type objectType, String assemblyFullName, String typeName, Object[] arguments)
Source: mscorlib
HResult: -2147221164

Ich habe NAV ganz normal installiert und es ist alles nur auf einem PC plaziert. In der Warnung steht zwar MicrosoftDynamicsNavServer$DynamicsNAV, ich bin aber nicht sicher ob es heißt, dass es auf einem Server erfolgt

fiddi hat geschrieben:Hallo,
Ein nicht ganz unwichtige Info noch: Die DontNet- Variablen sollten auf dem Client instantiiert werden, damit du auch die Schublade errreichst.

Kann man von dem Bildanhang "Locals" sagen, ob die auf dem Client instantiiert wurden, oder ist es eine total unterschiedliche Sache.

Kowa hat geschrieben:Versionsabweichungen beim .NET-Framework können auch solche Probleme verursachen, Tools zum prüfen hier:
.....

Mit ildasm.exe habe ich "Metadata version: v4.0.30319" in den beiden DLLs gefunden. Heißt es dass ich mit der .net Framework 4.6 die schon in Win 10 vorinstalliert wurde klarkomme, oder? Ansonsten habe ich noch die 3.5 Version

fiddi hat geschrieben:Es scheint, als ob du den Constructor eine s Dotnet- Objektes nicht ausgerufen hast, bevor du dieses Objekt benutzt

Woran wird es deutlich? Kann ich vielleicht noch mehr Info dazu geben oder scheint es nicht mehr die Ursache zu sein?
Zuletzt geändert von marcussulic am 26. Juli 2016 12:46, insgesamt 1-mal geändert.

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 12:33

Wie im zweiten Teil der Exception zu sehen ist, kann eine COM-DLL nicht instanziiert bzw. nicht gefunden werden. Ich bin gar nicht sicher, ob das überhaupt funktioniert mit dem Datentyp DotNet, aber diese solltest du vorher registrieren. Eventuell gibt es einen weiteren Installer?

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 12:48

marcussulic hat geschrieben:
fiddi hat geschrieben:Hallo,
Ein nicht ganz unwichtige Info noch: Die DontNet- Variablen sollten auf dem Client instantiiert werden, damit du auch die Schublade errreichst.

Kann man von dem Bildanhang "Locals" sagen, ob die auf dem Client instantiiert wurden, oder ist es eine total unterschiedliche Sache.


Du musst die Properties der entsprechenden Variable aufrufen (Shift + F4). Da gibt es dann die Eigenschaft "RunOnClient". Diese muss auf "Yes" stehen.

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 13:06

Hallo,

bei der COM-Componente "CCB90042-B81E-11D2-AB74-0040054C3719" handelt es sich um "OPOSCashDrawer.ocx"

Gruß Fiddi

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

26. Juli 2016 16:12

fiddi hat geschrieben:Hallo,
bei der COM-Componente "CCB90042-B81E-11D2-AB74-0040054C3719" handelt es sich um "OPOSCashDrawer.ocx"
Gruß Fiddi


Genau ..ich habe keine Ahnung warum sie da angezeigt wurde. Kann sein dass die DLLs die OCX Datei brauchen um Methoden auszuführen? Ich habe sie jetzt registriert, oder mindestens hat es mir cmd gezeigt

m_schneider hat geschrieben:Du musst die Properties der entsprechenden Variable aufrufen (Shift + F4). Da gibt es dann die Eigenschaft "RunOnClient". Diese muss auf "Yes" stehen.

Das habe ich schon gemacht, und zwar ziemlich am Anfang und für alle Variablen. Kann es auch schaden?
Zuletzt geändert von marcussulic am 10. Januar 2017 18:32, insgesamt 1-mal geändert.

Re: [POS]Problem beim Öffnen einer Kassenschublade-keine Ins

27. Juli 2016 08:22

marcussulic hat geschrieben:
m_schneider hat geschrieben:Du musst die Properties der entsprechenden Variable aufrufen (Shift + F4). Da gibt es dann die Eigenschaft "RunOnClient". Diese muss auf "Yes" stehen.

Das habe ich schon gemacht, und zwar ziemlich am Anfang und für alle Variablen. Kann es auch schaden?

Ich hatte noch keinen Fall in welchem das ein Problem war.

Re: [POS]Problem beim Öffnen einer Kassenschublade

5. Mai 2017 10:25

Frisch aus der Schmiede eine Klassenbibliothek für Kassensysteme:
Microsoft Point of Service for .NET v1.14.1 (POS for .NET)