Hi,
also ich weiß nicht ob das in diesen Teil gehört aber die anderen erschienen mir auch nicht gerade passend.
ich versuche jetzt schon seit einiger Zeit die eine Dll zur steuerung eines Roboters von Fischer Technik (RoboTX) in mein VB Projekt eingebunden zu bekommen.
jedoch tritt bei mir immer folgender Fehler auf:
Ein Aufruf an die PInvoke-Funktion "test1!test.TXCDaten.FTXLib::ftxOpenComDevice" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.
hier noch der Code der classe, die dll bereitstellen soll:
und die test datei:
der Fehler tritt immer beim aufruf der Funktion: FTXLib.ftxOpenComDevice("COM", 38400, errCode)
hat einer von euch eine Idee was ich falsch mache?
Mfg PatteKi
also ich weiß nicht ob das in diesen Teil gehört aber die anderen erschienen mir auch nicht gerade passend.
ich versuche jetzt schon seit einiger Zeit die eine Dll zur steuerung eines Roboters von Fischer Technik (RoboTX) in mein VB Projekt eingebunden zu bekommen.
jedoch tritt bei mir immer folgender Fehler auf:
Ein Aufruf an die PInvoke-Funktion "test1!test.TXCDaten.FTXLib::ftxOpenComDevice" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.
hier noch der Code der classe, die dll bereitstellen soll:
VB.NET-Quellcode
- Imports System
- Imports System.Text
- Imports System.Runtime.InteropServices
- Namespace TXCDaten
- Public Enum FTERR As UInteger
- FTLIB_ERR_SUCCESS = &H0
- End Enum
- Public Enum TA_ID
- TA_LOCAL = 0 'Transfer Area des Masters
- TA_EXT_1 'Transfer Area für Slave 1
- TA_EXT_2 'Transfer Area für Slave 2
- TA_EXT_3 'Transfer Area für Slave 3
- TA_EXT_4 'Transfer Area für Slave 4
- TA_EXT_5 'Transfer Area für Slave 5
- TA_EXT_6 'Transfer Area für Slave 6
- TA_EXT_7 'Transfer Area für Slave 7
- TA_EXT_8 'Transfer Area für Slave 8
- TA_N_PARTS 'Anzahl der Transfer Areas
- End Enum
- Public Enum InputMode
- MODE_U = 0 ' mV
- MODE_R = 1 ' 5 kOhm
- MODE_ULTRASONIC = 3
- MODE_INVALID
- End Enum
- Public Class FTXLib
- Declare Function IniLib Lib "ftMscLib.dll" Alias "ftxInitLib" () As UInteger
- Declare Sub CloseLib Lib "ftMscLib.dll" Alias "ftxCloseLib" ()
- Declare Function ftxOpenComDevice Lib "ftMscLib.dll" Alias "ftxOpenComDevice" (<MarshalAs(UnmanagedType.LPStr)> ByVal comStr As String, ByVal baudr As UInteger, <Out()> ByRef errcode As UInteger) As UInteger
- <DllImport(".//ftMscLib.dll", EntryPoint:="ftxCloseDevice")> _
- Public Shared Sub CloseInterface(ByVal fthdl As UInteger)
- End Sub
- End Class
- End Namespace
und die test datei:
VB.NET-Quellcode
- Imports System
- Namespace TXCDaten
- Module Module1
- Dim fthdl As UInt32 = 0
- Dim com As String = "COM5"
- Sub Main()
- Dim errCode As UInteger
- FTXLib.IniLib()
- Console.WriteLine("geöffnet")
- fthdl = FTXLib.ftxOpenComDevice("COM", 38400, errCode)
- Console.WriteLine("gestartet")
- FTXLib.CloseInterface(fthdl)
- Console.WriteLine(errCode & "Fehlercode")
- FTXLib.CloseLib()
- End Sub
- End Module
- End Namespace
der Fehler tritt immer beim aufruf der Funktion: FTXLib.ftxOpenComDevice("COM", 38400, errCode)
hat einer von euch eine Idee was ich falsch mache?
Mfg PatteKi