PicoScope 7 Software
Available on Windows, Mac and Linux
The code (Upgraded version to .Net, of the sdk of sample VB6.0. Without changes on vb6.0, i get the same result.):Martyn wrote:Can you post your code, particularly the dll imports, so that we can check this out for you.
Please use the Code button just above the edit box.
Code: Select all
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Declare Function HumidiProbeOpenUnit Lib "HumidiProbe.dll" () As Boolean
Declare Function HumidiProbeGetUnitInfo Lib "HumidiProbe.dll" (ByVal handle As Short, ByRef str_Renamed As String, ByVal stringLength As Short, ByVal info As Short) As Short
Declare Function HumidiProbeGetSingleValue Lib "HumidiProbe.dll" (ByVal handle As Short, ByRef temp As Single, ByVal filterTemp As Short, ByRef humidity As Single, ByVal filterHumidity As Short) As Short
Declare Function HumidiProbeCloseUnit Lib "HumidiProbe.dll" (ByVal handle As Short) As Short
Dim handle_Renamed As Short
Dim temp As Single
Dim humidity As Single
Public obj As New Object
Private Sub Close_Renamed_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Close_Renamed.Click
Call HumidiProbeCloseUnit(handle_Renamed)
Text3.Text = "HumidiProbe closed"
End Sub
Private Sub Open_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Open.Click
Text3.Text = "Opening HumidiProbe" & "..."
Text3.Refresh()
handle_Renamed = HumidiProbeOpenUnit()
If handle_Renamed > 0 Then
Text3.Text = "HumidiProbe opened"
Else
Text3.Text = "Unable to open HumidiProbe"
End If
End Sub
Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim ok As Object
Dim Value As Integer
Dim tempFilter As Short
Dim humidityFilter As Short
tempFilter = 0
humidityFilter = 0
If handle_Renamed > 0 Then
ok = HumidiProbeGetSingleValue(handle_Renamed, temp, tempFilter, humidity, humidityFilter)
If ok > 0 Then
Text1.Text = CStr(temp)
Text2.Text = CStr(humidity)
Else
Text1.Text = "****"
Text2.Text = "****"
End If
End If
End Sub
End Class
Yes but, the output of OpenUnit remains 0. HumidiProbeGetSingleValue returns all params to 0.0.Martyn wrote:Can you try changing the return value for OpenUnit to Short
Code: Select all
Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim ok As Object
Dim Value As Integer
Dim tempFilter As Short
Dim humidityFilter As Short
tempFilter = 0
humidityFilter = 0
If handle_Renamed > 0 Then
ok = HumidiProbeGetSingleValue(handle_Renamed, temp, tempFilter, humidity, humidityFilter)
If ok > 0 Then
Text1.Text = CStr(temp)
Text2.Text = CStr(humidity)
Else
Text1.Text = "****"
Text2.Text = "****"
End If
End If
End Sub
Code: Select all
Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim status As Integer
Dim tempFilter As Short
Dim humidityFilter As Short
tempFilter = 0
humidityFilter = 0
If handle_Renamed > 0 Then
status = HumidiProbeGetSingleValue(handle_Renamed, temp, tempFilter, humidity, humidityFilter)
If status > 0 Then
Text1.Text = CStr(temp)
Text2.Text = CStr(humidity)
Else
Text1.Text = "****"
Text2.Text = "****"
End If
End If
End Sub
Code: Select all
Public Class PicoDLL
Declare Function HumidiProbeOpenUnit Lib "HumidiProbe.dll" () As Short 'Boolean
Declare Function HumidiProbeGetUnitInfo Lib "HumidiProbe.dll" (ByVal handle As Short, ByRef str_Renamed As String, ByVal stringLength As Short, ByVal info As Short) As Short
Declare Function HumidiProbeGetSingleValue Lib "HumidiProbe.dll" (ByVal handle As Short, ByRef temp As Single, ByVal filterTemp As Short, ByRef humidity As Single, ByVal filterHumidity As Short) As Short
Declare Function HumidiProbeCloseUnit Lib "HumidiProbe.dll" (ByVal handle As Short) As Short
Dim handle_Renamed As Short
Dim temp As Single
Dim humidity As Single
Public obj As New Object
Public Function PicoDatos(ByRef temperatura As Single, ByRef humedad As Single) As Short
Dim status As Short
Dim tempFilter As Short
Dim humidityFilter As Short
Try
If handle_Renamed > 0 Then
tempFilter = 0
humidityFilter = 0
status = HumidiProbeGetSingleValue(handle_Renamed, temp, tempFilter, humidity, humidityFilter)
If status > 0 Then
temperatura = CSng(temp)
humedad = CSng(humidity)
Return 1
Else
tempFilter = 0
humidityFilter = 0
Call HumidiProbeCloseUnit(handle_Renamed)
Return 0
End If
Else
tempFilter = 0
humidityFilter = 0
Call HumidiProbeCloseUnit(handle_Renamed)
Return 0
End If
Catch ex As Exception
Call HumidiProbeCloseUnit(handle_Renamed)
Return 0
End Try
End Function
Public Function iniciar_pico() As Short
Try
handle_Renamed = HumidiProbeOpenUnit()
Return handle_Renamed
Catch ex As Exception
Return 0
End Try
End Function
Public Function cerrar_pico() As Short
Try
handle_Renamed = HumidiProbeCloseUnit(handle_Renamed)
Return handle_Renamed
Catch ex As Exception
Return 0
End Try
End Function
End Class
'Webservice
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports PicoDLL.PicoDLL
_
_
_
Public Class Service
_
Public Function TemperaturaHumedad(ByRef temperatura As Short, ByRef humedad As Short) As Short
Dim objDLL As New PicoDLL.PicoDLL
Try
If objDLL.iniciar_pico() <> 0 Then
If objDLL.PicoDatos(temperatura, humedad) <> 0 Then
objDLL.cerrar_pico()
Return 0
Else
temperatura = 0
humedad = 0
objDLL.cerrar_pico()
Return 1
End If
Else
temperatura = 0
humedad = 0
objDLL.cerrar_pico()
Return 1
End If
Catch ex As Exception
temperatura = 0
humedad = 0
objDLL.cerrar_pico()
Return 1
End Try
End Function
End Class
'Call to webservice:
Dim WS As New localhost.Service()
WS.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim items As Short = WS.TemperaturaHumedad(temp, humidity)