Salve a tutti sono nuovo e sto letteralmente impazzendo nel cercare di gestire una DLL standard call in un progetto vb2008 devo utilizzare questa funzione per prendere dei valori di temperatura da un apparecchio collegato al PC tramite USB:
dal file .h della DLL risulta:
DllExport BOOL _stdcall GetPCBTemperature(DWORD Card, DWORD *Temp);
dove Temp è Temp[3] DWORD
che ho tradotto in un modulo vb:
Imports System.Runtime.InteropServices
<DllImport("BoxDLL.dll", EntryPoint:="GetPCBTemperature", ExactSpelling:=False, CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Public Function GetPCBTemperature(ByVal Card As UInteger, ByRef Temp() As UInteger) As Boolean
End Function
e che richiamo come:
Dim T() As UInteger = {0, 0, 0}
Debug.Print(GetPCBTemperature(1, T))
ma mi restituisce sempre T=Nothing
Ho provato anche con:
Imports System.Runtime.InteropServices
<DllImport("BoxDLL.dll", EntryPoint:="GetPCBTemperature", ExactSpelling:=False, CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Public Function GetPCBTemperature(ByVal Card As UInteger, ByRef Temp As IntPtr) As Boolean
End Function
Dim T() As UInteger = {0, 0, 0}
Debug.Print(GetPCBTemperature(1, T(0)))
e il risultato è = {0, 0, 0} (con il caldo che fa oggi ! :berto: )
Non ero molto preparato sull'argomento, dopo essermi documentato un po' adesso posso dire di aver raggiunto un bun stato confusionale !!!
Qualcuno ha giò affrontato questi problemi?