• 26.04.2024, 19:12
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Daten vom Ae mit VB lesen?

Samstag, 8. September 2007, 22:23

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) ;)

Re: Daten vom Ae mit VB lesen?

Samstag, 8. September 2007, 23:37

Das Samurizeplugin braucht die AquaSuite nicht.

Re: Daten vom Ae mit VB lesen?

Samstag, 8. September 2007, 23:45

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

Sebastian

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 00:06

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?!

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 00:13

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

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 00:39

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?

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 10:59

Zitat von »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

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 12:24

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

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 14:24

Zitat von »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?
... :-/

Re: Daten vom Ae mit VB lesen?

Sonntag, 9. September 2007, 14:37

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

Re: Daten vom Ae mit VB lesen?

Montag, 10. September 2007, 23:27

Zitat von »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

Quellcode

1
2
Imports AquaComputer.TranslationClasses
Imports AquaComputer.UsbHid

4-in der .designer.VB das

Quellcode

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

Quellcode

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 ;)

Quellcode

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

Quellcode

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

Quellcode

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?)

Quellcode

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];

Re: Daten vom Ae mit VB lesen?

Montag, 10. September 2007, 23:40

Zitat von »LotadaC«


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

Quellcode

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.

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 01:07

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?

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 01:43

weil man beim array bei 0 beginnt..

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 10:56

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??

Quellcode

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];

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 11:06

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

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 11:44

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.) ;)

Re: Daten vom Ae mit VB lesen?

Dienstag, 11. September 2007, 11:48

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

Sebastian