13/09/10 14:16
Neo1986
Buongiorno a tutti,
dovrei utilizzare una funzione contenuta in una dll non .net.
Il produttore ha allegato insieme a questa dll un esempio sviluppato in c# che è il seguente :
Come avrete capito, la temperatura restituita dalla dll con il codice di esempio è corretta, con il codice sotto ovviamente non è corretta perchè è sempre 0 (penso manchi la riga fixed float* pfT = temp)
Questo è il codice che ho tradotto in vb.net :
ovvimanete stampando tutti gli elementi di temp mi vengono restituiti solo degli 0
Secondo voi dove sbaglio?
dovrei utilizzare una funzione contenuta in una dll non .net.
Il produttore ha allegato insieme a questa dll un esempio sviluppato in c# che è il seguente :
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++; } textBoxHWMTcpu.Text = temp[0].ToString(); textBoxHWMTsys.Text = temp[1].ToString(); textBoxHWMTaux.Text = temp[2].ToString();
Come avrete capito, la temperatura restituita dalla dll con il codice di esempio è corretta, con il codice sotto ovviamente non è corretta perchè è sempre 0 (penso manchi la riga fixed float* pfT = temp)
Questo è il codice che ho tradotto in vb.net :
Dim pfV As Single* = volt Dim l As UInteger = 0, i As UInteger = 1 While i < (1 << 10) If 0 <> (i And u32VoltSupport) Then If Not SusiHWMGetVoltage(i, pfV + l, Nothing) Then MessageBox.Show("SusiHWMGetVoltage failed! " + "ErrorCode = " + SusiDllGetLastError().ToString()) Return End If End If l += 1 i <<= 1 End While
ovvimanete stampando tutti gli elementi di temp mi vengono restituiti solo degli 0
Secondo voi dove sbaglio?
Ultima modifica effettuata da Neo1986 13/09/10 14:18
aaa