Analog.OCX

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail

 

Analog.OCX : Übersicht

fischertechnik Computing Analog.OCX : TestrahmenAnalog.OCX ist ein Visual Basic UserControl mit dem die Werte der Analog-Eingänge des fischertechnik Interfaces flexibel dargestellt werden können. Dazu muß es mit dem Rohwert (rawValue) von EX bzw. EY in regelmäßigen Abständen (z.B. über einen Timer) aufgerufen (ShowValue) werden.

Die Darstellung erfolgt z.Zt. über die DisplayTypen ftiSegment (Kreisauschnitt) und ftiVertical (senkrechte Skala). Die Anzeigen sind in der Größe flexibel. Am unteren Rand können sie mit beschriftet (Description) werden. Zusätzlich wird hier der aktuelle Meßwert digital angezeigt, die Maßeinheit kann angegeben werden (Units).

Die Meßwerte können als Rohwerte, d.h. so wie sie vom Interface kommen, angezeigt werden. Dabei kann der Anzeigebereich gewählt werden ( MinValue, MaxValue). Außerdem können sie auf einen wählbaren Wertebereich linear abgebildet werden (MinUnit, MaxUnit). Bei Bedarf kann die Anzeigerichtung vertauscht werden (Exchanged). Auf diese Weise ist es z.B. möglich, die von einer Photozelle gemessenen Werte im Bereich von 0 bis 1000 auf Helligkeitswerte im Bereich 20 bis 80 Lumen abzubilden. Da die Photozelle bei größerer Helligkeit kleinere Werte anzeigt, wird die Anzeigerichtung vertauscht (Die Beispielwerte wurden mit einer kleinen Photozelle gemessen, die Umrechnung in Lumen ist erfunden).

Bei Erreichen bestimmbarer Meßwerte (LowArea, HighArea) werden Ereignisse ausgelöst : GotLow, GotNormal, GotHigh bzw. IsLow, IsNormal, IsHigh auf die in den entsprechenden Ereignisroutinen reagiert werden kann. Der Aufruf der Ereignisroutinen kann durch EventsActivated gesteuert werden.

Eigenschaften

Description anzuzeigender MeßwertName
DisplayType Typ des anzuzeigenden Meßinstruments
EventsActivated Aktivieren der Ereignisroutinen
Exchanged Vertauschen der Anzeigerichtung (gößerer Zeigerausschlag, kleinerer Meßwert)
HighArea Beginn des Bereichs der hohen Meßwerte
LowArea Ende des Bereichs der niedrigen Meßwerte
MaxUnit max. anzuzeigender Wert
MaxValue max. zu messender Wert
MinUnit min. anzuzeigender Wert
MinValue min. zu messender Wert
Units anzuzeigende Meßwerteinheit

Methoden

ShowValue Anzeige Instrument mit aktuellem Meßwert
ValueToUnit Umrechnung eines rawValues (Rohwertes, original Meßwertes) in einen unitValue (anzuzeigenden Wert)

Ereignisse

GotHigh akt. Meßwert in die HighArea eingetreten
GotLow akt. Meßwert in die LowArea eingetreten
GotNormal akt. Meßwert in die NormalArea eingetreten
IsHigh akt. Meßwert liegt in der HighArea
IsLow akt. Meßwert liegt in der LowArea
IsNormal akt. Meßwert liegt in der NormalArea

Beispiel : Testrahmen

Im Beispiel werden die Meßwerte eines Photowiderstandes (32 698) zweimal dargestellt : links mit DisplayType = ftiVertical die Originalmeßwerte des Photowiderstandes, rechts die auf eine (fiktive) Raumhelligkeit umgerechneten Werte mit DisplayType = ftiSegment. Unter dem rechten Display wird zusätzlich angezeigt, ob sich der Meßwert im Bereich normal, LOW oder HIGH befindet. Die Grenzwerte sind außerdem in den Skalen mit blau (LOW) und rot (HIGH) markiert. Das eigentliche Programm konzentriert sich auf die Routine cmdAction_Click :

Private Sub cmdAction_Click()

ana.MinUnit = 20
ana.MaxUnit = 80
ana.MinValue = 0
ana.MaxValue = 1000
ana.Exchanged = True

ft.AnalogScan = True
If ft.OpenInterface("COM1") = ftifehler Then
MsgBox "InterfaceProblem " & "COM1", vbCritical + vbOKOnly, "AnalogAnzeige"
Exit Sub
End If
cmdEnde.Enabled = False
cmdAction.Enabled = False

ana.EventsActivated = True
lblESC.Visible = True
Do
anb.ShowValue ft.Analogs(ftiAEY)
ana.ShowValue ft.Analogs(ftiAEY)
ft.Pause 200
Loop Until ft.Finish(1)

ft.CloseInterface
ana.ShowValue 0
lblESC.Visible = False
cmdAction.Enabled = True
cmdEnde.Enabled = True
cmdEnde.SetFocus

End Sub

  • Das Beispielprogramm ist in einer Programmgruppe (ftDisOCX.vbg) abgelegt mit separaten Projekten für das ftDisplay.OCX (ftDisplay.vbp / Analog.ctl) und den Testrahmen (ftDisplayTest.vbp / ftAnalogTest.FRM). Es kann auch in einem einzigen Projekt ftDisplayTest.vbp mit ftAnalogTest.FRM und Analog.CTL abgelegt werden. Beim Importieren von Analog.CTL wird der Scope dann automatisch auf private umgestellt (VB_Exposed = False).
  • FishFa50.OCX auf der Form plazieren (ein Arbeiten mit umFishEx.BAS ist genauso möglich)
  • Zwei Instanzen von Analog.ctl auf der Form plazieren (ana und anb) und die Eigenschaften : Description = "Photozelle", Units = "Ohm", DisplayTypes = 2, LowArea = 200, HighArea = 800 für anb und für ana die Eigenschaften : MinUnit = 40, MaxUnit = 80, Exchanged = -1 'True, Description = "Raumhelligkeit", Units = " Lumen" HighArea = 65 einstellen.
  • ana.MinUnit = 20 .... überschreiben die entsprechenden in der Eigenschaftsliste eingestellten Eigenschaften (nur zu Demozwecken).
  • ft.AnalogScan = True ... Verbindung mit dem Interface
  • ana.EventsActivated = True Die Eventroutinen werden aktiviert.
  • Do  ... Loop Until ft.Finish(1) Endlosschleife zur Abfrage und Anzeige der Analogwerte. Ende der Schleife durch ESC-Taste oder E1 = True

Ereignisroutinen

Private Sub ana_GotHigh(ByVal aktValue As Single)
lblArea = "HIGH"
lblArea.BackColor = vbRed
End Sub

Private Sub ana_GotLow(ByVal aktValue As Single)
lblArea = "LOW"
lblArea.BackColor = vbBlue
End Sub

Private Sub ana_GotNormal(ByVal aktValue As Single)
lblArea = "normal"
lblArea.BackColor = &H8000000F
End Sub

  1. In den Ereignisroutinen ana_GotHigh, _GotLow, _GotNormal wird nichts weiter gemacht als in lblArea den aktuellen Wertebereich anzuzeigen. Die Ereignisroutinen werden nur aufgerufen, wenn sich der Wertebereich ändert, also nicht bei jedem Meßwert (das wären dann IsHigh ...).

Sources und Zubehör

Die vollständige Source für das Beispiel befindet sich in AnaOCX.ZIP zusätzlich ist FishFa50.ZIP oder umFishVB.ZIP erforderlich. Bei umFish.BAS (umFishVB.ZIP) ist statt ft.OpenInterface ... ftiOpenInterface ... zu schreiben.