• 20.08.2025, 12:32
  • Register
  • Login
  • You are not logged in.

 

Dear visitor, welcome to Aqua Computer Forum. If this is your first visit here, please read the Help. It explains how this page works. You must be registered before you can use all the page's features. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

LotadaC

God

Daten vom Ae mit VB lesen?

Saturday, September 8th 2007, 10:23pm

Hallo,
bin mir nicht ganz sicher, ob Software oder Überwachung, habe folgende Fragen:

-Wie kann ich mit Visual Basic (2005 Express Edition bzw VB 8 ) die Daten vom Aquaero lesen?
-(geht das überhaupt?)
-Geht das auch ohne laufender Aquasuite?
-welche Methoden/Funktionsaufrufe stehen mir zur Verfügung
(-wie, genau?)

(nehme mal an daß ich mit Delphi 5 definitiv keinen Zugriff erhalte)

-Achso, daß Aquacomputer-Samurize-Plugin benötigt immer noch die laufende Suite (aber zumindest kein ständiges XML-Datei-erzeugen mehr), oder?

hat wer Antworten?
(Danke schonmal) ;)

cronix

God

Re: Daten vom Ae mit VB lesen?

Saturday, September 8th 2007, 11:37pm

Das Samurizeplugin braucht die AquaSuite nicht.

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Saturday, September 8th 2007, 11:45pm

doch, das aqua computer plugin benötigt die aquasuite.
das von hier:
http://forum.aqua-computer.de/index.php?…&threadID=92600
nicht.

Sebastian

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 12:06am

Das von Gemini kenn ich schon, ist aber noch nicht fertig (Durchflußmessung, Leistungsmessung usw fehlen...), oder hab ich da was verpaßt?

und zu den anderen Fragen?
Ich meine, Visaul Basic sattelt doch auf .NET 2 auf, oder?!

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 12:13am

du kannst die funktionen vom SDK bzw. die DLLs auch in VB.net benutzen.
Solle also kein problem sein.
Die SDK Beispiele sind aber alle in C# geschrieben. Die Methoden und klassen die benutzt weden sind aber gleich.

Sebastian

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 12:39am

Ok, also ich finde im SDK-Download ein Resource-Verzeichnis und 4 Projekte und Euer Samurize-Plugin

also von `ner Dokumentation seh´ ich da nix...
ich nehme mal an, daß ich mir die jeweiligen WindowMain.cs Dateien durchsehen muß, oder?

iNFiNiTE

God

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 10:59am

Quoted from "LotadaC"


ich nehme mal an, daß ich mir die jeweiligen WindowMain.cs Dateien durchsehen muß, oder?

richtig, so hab ich es damals auch gemacht :)

edit: und wenn du fragen/probleme hast, meld dich einfach.. vlt kann ich dir dann ja ein wenig helfen.

messi

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 12:24pm

in resource sind die dlls die du einbinden musst. Und in den anderen ordnern sind jeweils die quellcodes der applikationen und eine komilierte variante.
In windowMain.cs findest du alle funktionen die du benötigst.
Ich schaue mal,.. vielleicht finde ich noch das alte SetClock Projekt,. das gab es mal als VB.Net aber für Net 1.1.
Aber die Funktionen sind die gleichen.

Sebastian

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 2:24pm

Quoted from "messi"

...wenn du fragen/probleme hast, meld dich einfach.. vlt kann ich dir dann ja ein wenig helfen.

messi

*MELD* (mal bitte generell erklären, lerne VB erst seit `ner Woche nach´m Buch... :))

-also, ich gehe davon aus, daß ich die myTranslationClasses.dll und die USB.dll *irgendwie* einbinden muß, (also in das Projekt-Verzeichnis und dann wie weiter?)
-dann müßte ich doch irgendwie auf die Daten zugreifen können (also mit aquaero.<Parameter> oä)

also das Setclock von meiner Aquasuite-CD bekomme ich irgendwie zum laufen, unter VB - aber so richtig komme ich damit nicht klar. (erstellt 11.05.2005)
also an Lüfternahmen, Grenzen usw komme ich da ran, aber an den aktuellen Leistungswert? oder ist das dieses FanSetPower-dingens?
Und die Ist-Temperaturen?
Gibt es irgendwo mal `ne komplette Auflistung der, in der myTranslationClasses enthaltenen ... Methoden, auf die man zugreifen kann?
... :-/

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Sunday, September 9th 2007, 2:37pm

die Translation-classes liegen im quellcode vor,.. und dieser ist ausreichend dokumentiert.
Wenn du dir das aktuelle aquaero sdk demo anschaust, siehst du wie man auf temperaturen usw. zugreift.
Villeicht solltest du dich erst mal ein wenig in objektorientierte programmierung einarbeiten bevor du damit weitermachst.
Also man eine klasse programmieren und diese in einer Hello World anwendung benutzen, vielleicht wird dann etwas klarer wie das im SDK funktioniert.

Sebastian

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Monday, September 10th 2007, 11:27pm

Quoted from "Sebastian"

...
Villeicht solltest du dich erst mal ein wenig in objektorientierte programmierung einarbeiten bevor du damit weitermachst.
Also man eine klasse programmieren und diese in einer Hello World anwendung benutzen, vielleicht wird dann etwas klarer wie das im SDK funktioniert.

Sebastian

DANKE für diesen äusserst sinnigen Tip ::)

Also, ich hab das gestern so gemacht:
1-Neues Projekt angelegt
2-über Projekteigenschaften(MyProject)->Verweise die myTranslationClasses.dll(2.50.2627.25599) und die USB.dll(2.0.2627.25600) hinzugefügt
3-im Qellcode der .VB als erstes (also über pulic class...) die Namespaces importiert

Source code

1
2
Imports AquaComputer.TranslationClasses
Imports AquaComputer.UsbHid

4-in der .designer.VB das

Source code

1
2
3
4
   'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    'Das Bearbeiten ist mit dem Windows Form-Designer möglich.  
    'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    Friend WithEvents UsbConnection As UsbHid.HidControl

und das

Source code

1
2
3
4
5
6
7
8
9
10
11
       '
        'UsbConnection
        '
        Me.UsbConnection.BackColor = System.Drawing.SystemColors.ActiveCaptionText
        Me.UsbConnection.HidFillData = CType(0, Byte)
        Me.UsbConnection.HidLockReviceEvent = False
        Me.UsbConnection.Location = New System.Drawing.Point(-2, 0)
        Me.UsbConnection.Name = "UsbConnection"
        Me.UsbConnection.Size = New System.Drawing.Size(16, 17)
        Me.UsbConnection.TabIndex = 0
        Me.UsbConnection.Text = "HidControl1"

eingefügt bzw. verändert

achso, das hier auch noch, damit das Teil auch auf dem Form erscheint ;)

Source code

1
       Me.Controls.Add(Me.UsbConnection)

5-in Anlehnung an die alte SetClock in der .VB `ne globale USBAdresse (Integer) deklariert (damit nicht bei jeder aktualisierung der Daten alle USB-Devices neu durchsucht werden müssen)
6- unten aufgelistete Prozeduren für die USBConnection (Objekt)-Ereignisse, die Form_load/closing-Prozeduren und die verwendete FindDevice eingetragen

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Controls.Add(UsbConnection)
        UsbConnection.PIDArray.Add(HidControl.ACPID.aquaero_Rev4)
        UsbConnection.HidInit()

        FindDevice()
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        UsbConnection.HidShutdown()
    End Sub

    Private Sub FindDevice()
        Dim Success As Boolean
        For i As Integer = 0 To (UsbConnection.DeviceArray.Count - 1)
            Dim aquaeroData As New AquaComputer.TranslationClasses.aquaero_Rev4
            aquaeroData.CreateStructureFromString(UsbConnection.HidDirectReadFromDevice(i, Success))
            If Success Then USBAdresse = i

        Next

    End Sub

    Private Sub UsbConnection_HidDeviceListChanged(ByVal myDeviceArray As AquaComputer.UsbHid.HidControl.UserDeviceArray) Handles UsbConnection.HidDeviceListChanged

    End Sub

    Private Sub UsbConnection_HidDeviceRemoved(ByVal Index As System.Int32, ByVal Devicename As System.String) Handles UsbConnection.HidDeviceRemoved
        UsbConnection.HidShutdown()
        UsbConnection.HidInit()
    End Sub

    Private Sub UsbConnection_HidDeviceRawDataReceived(ByVal Index As System.Int32, ByVal Buffer() As System.Byte, ByVal Success As System.Boolean) Handles UsbConnection.HidDeviceRawDataReceived

    End Sub

    Private Sub UsbConnection_HidDeviceAttached(ByVal Index As System.Int32, ByVal Devicename As System.String) Handles UsbConnection.HidDeviceAttached

    End Sub

7- somit kann ich mir mit folgenden 3 Zeilen ein aktuelles...Abbild(?)(<-aquaeroData) der Aquaero-Daten erzeugen lassen

Source code

1
2
3
    Dim Success As Boolean
     Dim aquaeroData As New AquaComputer.TranslationClasses.aquaero_Rev4
     aquaeroData.CreateStructureFromString(UsbConnection.HidDirectReadFromDevice(USBAdresse, Success))

auf das ich dann mit aquaeroData. ... zugreifen kann

ok, das könnte man dann noch über `ne function ... as New AquaComputer.TranslationClasses.aquaero_Rev4 machen lassen...
jedenfalls gehts so ;)

P.S.: Ähem... Sebastian, kannst Du mir mal bitte den Sinn dieser Stelle aus der SDK erklären? (oder ist das´n Bug?)

Source code

1
2
3
4
5
6
//Display temperature 3
                        temp = (double)aquaero.Sensor_Temp[3] / 10;
                        if (temp > 100)
                              labelSensor3.Text = "Sensor3: " + "--.- °C " + aquaero.Sensor_Name[2];
                        else
                              labelSensor3.Text = "Sensor3: " + temp.ToString("F1") + "°C " + aquaero.Sensor_Name[2];

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Monday, September 10th 2007, 11:40pm

Quoted from "LotadaC"


P.S.: Ähem... Sebastian, kannst Du mir mal bitte den Sinn dieser Stelle aus der SDK erklären? (oder ist das´n Bug?)

Source code

1
2
3
4
5
6
//Display temperature 3
                        temp = (double)aquaero.Sensor_Temp[3] / 10;
                        if (temp > 100)
                              labelSensor3.Text = "Sensor3: " + "--.- °C " + aquaero.Sensor_Name[2];
                        else
                              labelSensor3.Text = "Sensor3: " + temp.ToString("F1") + "°C " + aquaero.Sensor_Name[2];


die temperaturen liegen im aquaero als integer vor, die kommastelle erhält man wenn man den int wert /10 rechnet.
Wenn also aus de aquaero 235 kommt sind das 23,5°C.
Und da nur Temp. bis 100°C ausgewetet werden wird darüber der wert als ungültig definiert.

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 1:07am

das hab ich so auch schon herausbekommen, mit den Zehntelgraden, aber warum soll hinter dem Text "Sensor3:" und der Temp davon (ode reben"--,- °C") der Name von Sensor 2 stehen?

iNFiNiTE

God

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 1:43am

weil man beim array bei 0 beginnt..

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 10:56am

Daß der Index (normalerweise) mit 0 beginnt ist mir schon klar, was aber in Array(0) steht, geht aus dem Qellcode (der main.cs) nicht hervor, wird nämlich nie zugewiesen/zugegriffen (zumindest hab ichs mal eben so beim überfliegen nicht gesehen).

Für den Sensor 1 wird in den entsprechenden Arrays (Ist-Temperatur, Name usw) immer auf arrayvariable(1) zugegriffen, bei Sensor 2 ists die 2 ... wenn die Nomenklatur einheitlich sein sollte, würde man bei Sensor 3 (ja, genau) auch die 3 erwarten dürfen - ist aber nicht so ::)

Wollt Ihr mich jetzt auf´n Arm nehmen, oder wie??

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                       //Display temperature 1
                        temp = (double)aquaero.Sensor_Temp[1] / 10;
                        if (temp > 100)
                              labelSensor1.Text = "Sensor1: " + "--.- °C " + aquaero.Sensor_Name[1];
                        else
                              labelSensor1.Text = "Sensor1: " + temp.ToString("F1") + "°C " + aquaero.Sensor_Name[1];

                        //Display temperature 2
                        temp = (double)aquaero.Sensor_Temp[2] / 10;
                        if (temp > 100)
                              labelSensor2.Text = "Sensor2: " + "--.- °C " + aquaero.Sensor_Name[2];
                        else
                              labelSensor2.Text = "Sensor2: " + temp.ToString("F1") + "°C " + aquaero.Sensor_Name[2];

                        //Display temperature 3
                        temp = (double)aquaero.Sensor_Temp[3] / 10;
                        if (temp > 100)
                              labelSensor3.Text = "Sensor3: " + "--.- °C " + aquaero.Sensor_Name[2];
                        else
                              labelSensor3.Text = "Sensor3: " + temp.ToString("F1") + "°C " + aquaero.Sensor_Name[2];

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 11:06am

ja, das ist ein fehler im sdk, das sollte aber nun wirklich nicht schlimm sein, da die beispiele nur zeigen sollen wie an die Daten kommt.
Wenn du dir beim debuggen einen Haltepunkt setzt kannst dir doch alle daten in der Struktur anschauen. vielleicht wird dann einiges klarer.
Beim aquaero ist das mit den arrays in der tat etwas unschön, da es arrays gibt die mit [0] anfangen und welche die erst mit [1] anfangen. Das sind halt noch überbleibsel aus ewig alten definitionen die man nicht so einfach ändern kann. Bei allen anderen geräten sind alle arrays nullbasiert.

Sebastian

LotadaC

God

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 11:44am

ok, danke...

bleibt nur noch die Frage, ob es irgendwo `ne Dokumentation der, in der myTranslationClasses bereitgestellten Eigenschaften, Funktionen und Methoden gibt (also welche es gibt, kann ich dem Objektbrowser entnehmen, Syntax auch, aber was die machen kann man nur raten (anhand der Namen), und was die zurückgeben, kann man nur anhand der Rückgabetypen bzw deren Werten schlußfolgern (also zB das mit den Zehntelgraden bei den Temperaturen, oder mit den "Byte-Prozenten" bei der Lüfterleistung)

Was ich suche ist quasi sowas, wie die Liste aus der readme_de.txt im Samurize-Plugin, nur eben mit `ner Erklärung, was zurückgegeben wird.

Edit: der Main.cs kann man ja außer dem generellen Abrufen der Daten nicht allzuviel entnehmen, wird ja nur (beispielhaft) mit ein paar Infos (Name, Firmware, OS etc), Temperaturen und Lüfterleistung/drehzahl/drehzahlvorgabe gezeigt.

Gibt´s irgendwo so´ne Liste, oder kann man das aus irgend´nem anderen Quellcode auslesen, oder muß man das selbst ausprobieren?
ok, hat sich erledigt (s.u.) ;)

sebastian

Administrator

Re: Daten vom Ae mit VB lesen?

Tuesday, September 11th 2007, 11:48am

soetwas gibt es nicht, bzw. diese infos musst du aus den vorhanden beispielen entnehmen.

Sebastian