Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    VB.Net 4 Call dll C Tipi di Dati

    Ciao a tutti,

    Ho a disposizione una vecchia DLL scritta in C.
    Sto cercando di utilizzarla con VB.Net ma ottengo dei risultati che non riesco a capire.
    Da documentazione uno dei metodi pochi chiari della DLL è il seguente :
    codice:
    ND2_ERR ND2Open ( unsigned long ip,
    ND2_HANDLE* ND2,
    long timeout,
    char* ident,
    unsigned long len
    )
    In pratica i metodi ND2GetHostIP ND2Open pare funzionino correttamente.
    Invece il metodo ND2GetDataFieldPtr dovrebbe restituirmi un valore nel campo field :
    00001420000 (Questo valore lo ottengo da un vecchio compilato in C)....
    La vecchia funzione in C che non capisco effettua una sorta di conversione presumo è : rt_status[i] = *(unsigned short *)field;
    Invece io ottengo in .net : 124916
    Il codice da me redatto è il seguente :

    codice:
    Imports System.Runtime.InteropServices
    
    Public Enum ND2Err As UInteger
        ND2_NoError = 0    ' Call was successful 
        .
        .
        .
    End Enum
    
    Public Enum ND2DataRegion As Integer
        ND2_DR_Global = 0    'The field is in the global data area */ 
        .
        .
    End Enum
    Public Enum ND2PositionDataField As Integer
        ND2_PDF_EndOfList = 0    'This field type marks the end of the list of data fields */
        .
        .
    End Enum
    
    
    Module Module1
        '<DllImport("ND2_DLL.DLL", CallingConvention:=CallingConvention.StdCall)> _
        'Function ND2GetHostIP(ByVal hostname As String, ByRef ip As UInt32) As ND2Err
        'End Function
    
    
        <DllImport("ND2_DLL.DLL", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)>
        Function ND2GetHostIP(ByVal hostname As String, ByRef ip As UInt32) As ND2Err
        End Function
    
        <DllImport("ND2_DLL.DLL", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)>
        Function ND2Open(ByVal ip As UInt32, ByRef ND2 As Integer, ByVal timeout As Long, ByRef fw_version As String, ByVal lenn As Integer) As ND2Err
        End Function
    
        <DllImport("ND2_DLL.DLL", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.Cdecl)>
        Function ND2GetDataFieldPtr(ByVal ND2 As Integer, ByRef data As String, ByVal DataRegion As ND2DataRegion, ByVal type As ND2PositionDataField, ByRef field As UInt32, ByRef size As Long) As ND2Err
        End Function
    
        Sub Main()
            'TEST FUNZIONE ND2GetHostIP
            Dim ip As UInt32
            Dim host As String
            Dim Err As ND2Err
            host = "192.168.000.002"
            Err = ND2GetHostIP(host, ip)
            Console.WriteLine("Err : " & Err & " IP From ND2GetHostIP : " & ip)
    
            'TEST FUNZIONE OPEN
            Dim ND2 As Integer
            Dim timeout As Long
            Dim fw_version As String
    
            timeout = 5000
            Err = ND2Open(ip, ND2, timeout, fw_version, 20)
            Console.WriteLine("Err : " & Err & " ND2 : " & ND2 & " Fw Version : " & fw_version)
    
            Dim data As String
            Dim field As UInt32
            Dim size As Long
            'TEST FUNZIONE LETTURA
            Err = ND2GetDataFieldPtr(ND2, data, ND2DataRegion.ND2_DR_Encoder1, ND2PositionDataField.ND2_PDF_PositionData, field, size)
    
            Console.WriteLine("Err : " & Err & " val : " & field)
            Console.ReadKey()
    
    
        End Sub
    
    End Module
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai detto come è dichiarata la funzione ND2GetDataFieldPtr nel codice C ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ma perchè nn mi arrivano più le mail per i messaggi di risposta... bho...

    Tra milioni di tentativi sono riuscito...

    Ora ho un problema di utilizzo DLL da VB6, ma apro nuova discussione sul form apposta.
    Che mestiere difficile.....essere da soli ancora di più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.