10/05/10 7:15
mattia86
Buongiorno a tutti e complimenti per il forum!
Purtroppo ho un grosso problema che mi ha portato alla disperazione dopo 3 giorni di tentativi veniamo al dunque.
Ho una dll esterna che mi permette, tramite una funzione, di estrarre la temperatura della cpu ( e molti altri dati, per ora considero questo per semplicità. Il problema è che non riesco a dichiararla e a passarci i valori giusti.
Nella specifica della dll c'è scritto questo :
In un progetto di esempio sviluppato in C# (di cui io non capisco una cippa, o quasi), la funzione è utilizzata in questo modo :
In questo modo ovviamente, inserendo temp[1] in una textbox, ottengo la temperatura del sistema.... io in vb ho provato a fare così : (fa anche rima)
A questo punto la textbox e la variabile conterranno sempre il valore 0! non capisco proprio il perchè! Ho cercato di prendere e convertire semplicemente tutto ciò che è stato sviluppato in C# in VB!
Help please!
Saluti
Purtroppo ho un grosso problema che mi ha portato alla disperazione dopo 3 giorni di tentativi veniamo al dunque.
Ho una dll esterna che mi permette, tramite una funzione, di estrarre la temperatura della cpu ( e molti altri dati, per ora considero questo per semplicità. Il problema è che non riesco a dichiararla e a passarci i valori giusti.
Nella specifica della dll c'è scritto questo :
BOOL SusiHWMGetTemperature(WORD tempType, float *retval, WORD *typeSupport = NULL); Parameters tempType [in]Specifies a temperature sensor to get value from. It can be one of the flags TCPU (1) – CPU temperature TSYS (2) – System / ambient temperature retval [out]Point to a variable in which this function returns the temperature in Celsius. Typesupport [out] If the value is specified as a pointer (non-NULL) to a variable, it will return the types of available sensors in flags bitwise-ORed Return Value TRUE (1) indicates success; FALSE (0) indicates failure
In un progetto di esempio sviluppato in C# (di cui io non capisco una cippa, o quasi), la funzione è utilizzata in questo modo :
[DllImport("Susi.dll")] public unsafe static extern bool SusiHWMGetTemperature(UInt16 tempType, float* retval, UInt16* typeSupport); float[] temp = new float[3]; fixed (float* pfT = temp) for (ushort m = 0, j = 1; j < (1 << 3); j <<= 1) { if (0 != (j & u16TempSupport)) { if (!SusiHWMGetTemperature(j, pfT + m, null)) { MessageBox.Show("SusiHWMGetTemperature failed! " + "ErrorCode = " + SusiDllGetLastError().ToString()); return; } } m++; }
In questo modo ovviamente, inserendo temp[1] in una textbox, ottengo la temperatura del sistema.... io in vb ho provato a fare così : (fa anche rima)
'Importo la funzione dalla dll <DllImport("Susi.dll")> _ Public Shared Function SusiHWMGetTemperature(ByVal tempType As UInt16, ByRef retval As Single, ByRef typeSupport As UInt16) As Boolean End Function Dim Temperatura As Single = 0 'richiamo la funzione per l'estrazione della temperatura e verifico che il valore restituito sia true (infatti lo è) Trace.WriteLine(PCM3362.SusiHWMGetTemperature(1, Temperatura, Nothing).ToString) 'aggiorno il valore della textbox Me.TextBoxTemperaturaCPU.Text = Temperatura.ToString
A questo punto la textbox e la variabile conterranno sempre il valore 0! non capisco proprio il perchè! Ho cercato di prendere e convertire semplicemente tutto ciò che è stato sviluppato in C# in VB!
Help please!
Saluti
aaa