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